%!PS-Adobe-1.0
%%Creator: cleopatra:docsourc (Documentation Sources,,,,)
%%Title: stdin (ditroff)
%%CreationDate: Wed Aug 12 10:22:13 1987
%%EndComments
% lib/psdit.pro -- prolog for psdit (ditroff) files
% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
% last edit: shore Sat Nov 23 20:28:03 1985
% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $

/$DITroff 140 dict def $DITroff begin
/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
  /pagesave save def}def
/PB{save /psv exch def currentpoint translate 
  resolution 72 div dup neg scale 0 0 moveto}def
/PE{psv restore}def
/arctoobig 90 def /arctoosmall .05 def
/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
/tan{dup sin exch cos div}def
/point{resolution 72 div mul}def
/dround	{transform round exch round exch itransform}def
/xT{/devname exch def}def
/xr{/mh exch def /my exch def /resolution exch def}def
/xp{}def
/xs{docsave restore end}def
/xt{}def
/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
/xH{/fontheight exch def F}def
/xS{/fontslant exch def F}def
/s{/fontsize exch def /fontheight fontsize def F}def
/f{/fontnum exch def F}def
/F{fontheight 0 le {/fontheight fontsize def}if
   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
/X{exch currentpoint exch pop moveto show}def
/N{3 1 roll moveto show}def
/Y{exch currentpoint pop exch moveto show}def
/S{show}def
/ditpush{}def/ditpop{}def
/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
/AN{4 2 roll moveto 0 exch ashow}def
/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
/AS{0 exch ashow}def
/MX{currentpoint exch pop moveto}def
/MY{currentpoint pop exch moveto}def
/MXY{moveto}def
/cb{pop}def	% action on unknown char -- nothing for now
/n{}def/w{}def
/p{pop showpage pagesave restore /pagesave save def}def
/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
/distance{dup mul exch dup mul add sqrt}def
/dstroke{currentpoint stroke moveto}def
/Dl{2 copy gsave rlineto stroke grestore rmoveto}def
/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
 currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
/Dc{dup arcellipse dstroke}def
/De{arcellipse dstroke}def
/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
 /cradius centerv centerv mul centerh centerh mul add sqrt def
 /eradius endv endv mul endh endh mul add sqrt def
 /endang endv endh atan def
 /startang centerv neg centerh neg atan def
 /sweep startang endang sub dup 0 lt{360 add}if def
 sweep arctoobig gt
 {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
  /midh midang cos midrad mul def /midv midang sin midrad mul def
  midh neg midv neg endh endv centerh centerv midh midv Da
  currentpoint moveto Da}
 {sweep arctoosmall ge
  {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
  centerv neg controldelt mul centerh controldelt mul
  endv neg controldelt mul centerh add endh add
  endh controldelt mul centerv add endv add
  centerh endh add centerv endv add rcurveto dstroke}
 {centerh endh add centerv endv add rlineto dstroke}ifelse}ifelse}def

/Barray 200 array def % 200 values in a wiggle
/D~{mark}def
/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
  Bcontrol Blen 2 sub 2 copy get 2 mul put
  Bcontrol Blen 1 sub 2 copy get 2 mul put
  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
  {/i exch def
   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
   /Xbi Xcont Bcontrol i 2 add get 2 div add def
   /Ybi Ycont Bcontrol i 3 add get 2 div add def
   /Xcont Xcont Bcontrol i 2 add get add def
   /Ycont Ycont Bcontrol i 3 add get add def
   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
  }for dstroke}if}def
end
/ditstart{$DITroff begin
 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
 /fonts[nfonts{0}repeat]def
 /fontnames[nfonts{()}repeat]def
/docsave save def
}def

% character outcalls
/oc {/pswid exch def /cc exch def /name exch def
   /ditwid pswid fontsize mul resolution mul 72000 div def
   /ditsiz fontsize resolution mul 72 div def
   ocprocs name known{ocprocs name get exec}{name cb}
   ifelse}def
/fractm [.65 0 0 .6 0 0] def
/fraction
 {/fden exch def /fnum exch def gsave /cf currentfont def
  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
  grestore ditwid 0 rmoveto} def
/oce {grestore ditwid 0 rmoveto}def
/dm {ditsiz mul}def
/ocprocs 50 dict def ocprocs begin
(14){(1)(4)fraction}def
(12){(1)(2)fraction}def
(34){(3)(4)fraction}def
(13){(1)(3)fraction}def
(23){(2)(3)fraction}def
(18){(1)(8)fraction}def
(38){(3)(8)fraction}def
(58){(5)(8)fraction}def
(78){(7)(8)fraction}def
(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
(is){gsave 0 .15 dm rmoveto(\362)show oce}def
(->){gsave 0 .02 dm rmoveto(\256)show oce}def
(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
(==){gsave 0 .05 dm rmoveto(\272)show oce}def
end

% an attempt at a PostScript FONT to implement ditroff special chars
% this will enable us to 
%	cache the little buggers
%	generate faster, more compact PS out of psdit
%	confuse everyone (including myself)!
50 dict dup begin
/FontType 3 def
/FontName /DIThacks def
/FontMatrix [.001 0 0 .001 0 0] def
/FontBBox [-260 -260 900 900] def% a lie but ...
/Encoding 256 array def
0 1 255{Encoding exch /.notdef put}for
Encoding
 dup 8#040/space put %space
 dup 8#110/rc put %right ceil
 dup 8#111/lt put %left  top curl
 dup 8#112/bv put %bold vert
 dup 8#113/lk put %left  mid curl
 dup 8#114/lb put %left  bot curl
 dup 8#115/rt put %right top curl
 dup 8#116/rk put %right mid curl
 dup 8#117/rb put %right bot curl
 dup 8#120/rf put %right floor
 dup 8#121/lf put %left  floor
 dup 8#122/lc put %left  ceil
 dup 8#140/sq put %square
 dup 8#141/bx put %box
 dup 8#142/ci put %circle
 dup 8#143/br put %box rule
 dup 8#144/rn put %root extender
 dup 8#145/vr put %vertical rule
 dup 8#146/ob put %outline bullet
 dup 8#147/bu put %bullet
 dup 8#150/ru put %rule
 dup 8#151/ul put %underline
 pop
/DITfd 100 dict def
/BuildChar{0 begin
 /cc exch def /fd exch def
 /charname fd /Encoding get cc get def
 /charwid fd /Metrics get charname get def
 /charproc fd /CharProcs get charname get def
 charwid 0 fd /FontBBox get aload pop setcachedevice
 2 setlinejoin 40 setlinewidth
 newpath 0 0 moveto gsave charproc grestore
 end}def
/BuildChar load 0 DITfd put
%/UniqueID 5 def
/CharProcs 50 dict def
CharProcs begin
/space{}def
/.notdef{}def
/ru{500 0 rls}def
/rn{0 840 moveto 500 0 rls}def
/vr{0 800 moveto 0 -770 rls}def
/bv{0 800 moveto 0 -1000 rls}def
/br{0 750 moveto 0 -1000 rls}def
/ul{0 -140 moveto 500 0 rls}def
/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
/sq{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
/bx{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
    50 setlinewidth stroke}def

/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
end

/Metrics 50 dict def Metrics begin
/.notdef 0 def
/space 500 def
/ru 500 def
/br 0 def
/lt 416 def
/lb 416 def
/rt 416 def
/rb 416 def
/lk 416 def
/rk 416 def
/rc 416 def
/lc 416 def
/rf 416 def
/lf 416 def
/bv 416 def
/ob 350 def
/bu 350 def
/ci 750 def
/bx 750 def
/sq 750 def
/rn 500 def
/ul 500 def
/vr 0 def
end

DITfd begin
/s2 500 def /s4 250 def /s3 333 def
/a4p{arcto pop pop pop pop}def
/2cx{2 copy exch}def
/rls{rlineto stroke}def
/currx{currentpoint pop}def
/dround{transform round exch round exch itransform} def
end
end
/DIThacks exch definefont pop
ditstart
(psc)xT
576 1 1 xr
1(Times-Roman)xf 1 f
2(Times-Italic)xf 2 f
3(Times-Bold)xf 3 f
4(Times-BoldItalic)xf 4 f
5(Helvetica)xf 5 f
6(Helvetica-Bold)xf 6 f
7(Courier)xf 7 f
8(Courier-Bold)xf 8 f
9(Symbol)xf 9 f
10(DIThacks)xf 10 f
10 s
1 f
xi
%%EndProlog

%%Page: 1 1
10 s 0 xH 0 xS 1 f
8 s
10 s
32(--)Y
4323(--)X
3 f
12 s
1219 984(RATFOR)N
1648(\320)X
1768(A)X
1861(Preprocessor)X
2425(for)X
2572(a)X
2644(Rational)X
3020(Fortran)X
2 f
10 s
1957 1176(Brian)N
2159(W.)X
2266(Kernighan)X
1 f
1442 1320(structured)N
1783(programming,)X
2259(control)X
2506(\257ow,)X
2688(programming)X
2 f
2094 1608(ABSTRACT)N
1 f
755 1828(Although)N
1084(Fortran)X
1347(is)X
1427(not)X
1556(a)X
1619(pleasant)X
1909(language)X
2226(to)X
2315(use,)X
2469(it)X
2540(does)X
2713(have)X
2891(the)X
3015(advantages)X
3398(of)X
3491(universality)X
3895(and)X
555 1924(\(usually\))N
874(relative)X
1149(ef\256ciency.)X
1540(The)X
1699(Ratfor)X
1938(language)X
2261(attempts)X
2565(to)X
2660(conceal)X
2939(the)X
3070(main)X
3263(de\256ciencies)X
3675(of)X
3775(Fortran)X
555 2020(while)N
753(retaining)X
1058(its)X
1153(desirable)X
1463(qualities,)X
1774(by)X
1874(providing)X
2205(decent)X
2435(control)X
2682(\257ow)X
2844(statements:)X
10 f
615 2144(g)N
1 f
755(statement)X
1082(grouping)X
10 f
615 2268(g)N
3 f
755(if-else)X
1 f
976(and)X
3 f
1112(switch)X
1 f
1350(for)X
1464(decision-making)X
10 f
615 2392(g)N
3 f
755(while)X
1 f
937(,)X
3 f
977(for)X
1 f
1080(,)X
3 f
1120(do)X
1 f
1204(,)X
1244(and)X
3 f
1380(repeat-until)X
1 f
1805(for)X
1919(looping)X
10 f
615 2516(g)N
3 f
755(break)X
1 f
975(and)X
3 f
1111(next)X
1 f
1278(for)X
1392(controlling)X
1763(loop)X
1925(exits)X
555 2640(and)N
691(some)X
880(``syntactic)X
1239(sugar'':)X
10 f
615 2764(g)N
1 f
755(free)X
901(form)X
1077(input)X
1261(\(multiple)X
1574(statements/line,)X
2094(automatic)X
2430(continuation\))X
10 f
615 2888(g)N
1 f
755(unobtrusive)X
1153(comment)X
1471(convention)X
10 f
615 3012(g)N
1 f
755(translation)X
1113(of)X
1200(>,)X
1285(>=,)X
1415(etc.,)X
1569(into)X
1713(.GT.,)X
1900(.GE.,)X
2087(etc.)X
10 f
615 3136(g)N
3 f
755(return)X
1 f
978(\(expression\))X
1395(statement)X
1722(for)X
1836(functions)X
10 f
615 3260(g)N
3 f
755(de\256ne)X
1 f
979(statement)X
1306(for)X
1420(symbolic)X
1733(parameters)X
10 f
615 3384(g)N
3 f
755(include)X
1 f
1023(statement)X
1350(for)X
1464(including)X
1786(source)X
2016(\256les)X
555 3508(Ratfor)N
780(is)X
853(implemented)X
1291(as)X
1378(a)X
1434(preprocessor)X
1865(which)X
2081(translates)X
2404(this)X
2539(language)X
2849(into)X
2993(Fortran.)X
755 3632(Once)N
960(the)X
1093(control)X
1354(\257ow)X
1530(and)X
1680(cosmetic)X
1999(de\256ciencies)X
2412(of)X
2513(Fortran)X
2783(are)X
2916(hidden,)X
3188(the)X
3320(resulting)X
3634(language)X
3958(is)X
555 3728(remarkably)N
947(pleasant)X
1236(to)X
1324(use.)X
1497(Ratfor)X
1728(programs)X
2057(are)X
2182(markedly)X
2511(easier)X
2725(to)X
2813(write,)X
3024(and)X
3166(to)X
3253(read,)X
3437(and)X
3578(thus)X
3736(easier)X
3949(to)X
555 3824(debug,)N
791(maintain)X
1091(and)X
1227(modify)X
1478(than)X
1636(their)X
1803(Fortran)X
2059(equivalents.)X
755 3948(It)N
832(is)X
913(readily)X
1164(possible)X
1454(to)X
1544(write)X
1737(Ratfor)X
1970(programs)X
2301(which)X
2525(are)X
2652(portable)X
2942(to)X
3031(other)X
3223(environments.)X
3726(Ratfor)X
3958(is)X
555 4044(written)N
805(in)X
890(itself)X
1073(in)X
1158(this)X
1296(way,)X
1473(so)X
1567(it)X
1634(is)X
1710(also)X
1862(portable;)X
2169(versions)X
2458(of)X
2547(Ratfor)X
2774(are)X
2895(now)X
3055(running)X
3326(on)X
3428(at)X
3508(least)X
3677(two)X
3819(dozen)X
555 4140(different)N
852(types)X
1041(of)X
1128(computers)X
1482(at)X
1560(over)X
1723(\256ve)X
1863(hundred)X
2146(locations.)X
755 4264(This)N
927(paper)X
1136(discusses)X
1464(design)X
1703(criteria)X
1960(for)X
2083(a)X
2148(Fortran)X
2413(preprocessor,)X
2873(the)X
3000(Ratfor)X
3234(language)X
3553(and)X
3698(its)X
3802(imple-)X
555 4360(mentation,)N
915(and)X
1051(user)X
1205(experience.)X
3 f
555 4580(1.)N
655(INTRODUCTION)X
1 f
755 4704(Most)N
952(programmers)X
1413(will)X
1570(agree)X
1778(that)X
1931(Fortran)X
555 4800(is)N
630(an)X
728(unpleasant)X
1093(language)X
1405(to)X
1489(program)X
1783(in,)X
1887(yet)X
2006(there)X
555 4896(are)N
684(many)X
892(occasions)X
1234(when)X
1438(they)X
1606(are)X
1734(forced)X
1969(to)X
2060(use)X
555 4992(it.)N
701(For)X
874(example,)X
1228(Fortran)X
1526(is)X
1640(often)X
1866(the)X
2025(only)X
555 5088(language)N
871(thoroughly)X
1248(supported)X
1590(on)X
1696(the)X
1820(local)X
2002(com-)X
555 5184(puter.)N
783(Indeed,)X
1044(it)X
1110(is)X
1185(the)X
1305(closest)X
1545(thing)X
1731(to)X
1815(a)X
1873(universal)X
555 5280(programming)N
1027(language)X
1353(currently)X
1678(available:)X
2025(with)X
555 5376(care)N
727(it)X
808(is)X
898(possible)X
1197(to)X
1296(write)X
1498(large,)X
1716(truly)X
1904(portable)X
555 5472(Fortran)N
815(programs[1].)X
1276(Finally,)X
1546(Fortran)X
1805(is)X
1881(often)X
2069(the)X
8 s
10 f
555 5552(hhhhhhhhhhhhhhhhhh)N
1 f
555 5632(This)N
691(paper)X
854(is)X
918(a)X
967(revised)X
1172(and)X
1285(expanded)X
1550(version)X
1759(of)X
1833(oe)X
1914(published)X
2184(in)X
2 f
2255(Software\320Practice)X
2777(and)X
2894(Experience,)X
1 f
3217(October)X
3443(1975.)X
3624(The)X
555 5712(Ratfor)N
734(described)X
994(here)X
1119(is)X
1178(the)X
1272(one)X
1380(in)X
1446(use)X
1547(on)X
6 s
1627(UNIX)X
8 s
1764(and)X
6 s
1872(GCOS)X
8 s
2017(at)X
2079(Bell)X
2202(Laboratories,)X
2556(Murray)X
2763(Hill,)X
2895(N.)X
2973(J.)X
10 s
2399 4580(most)N
2583(``ef\256cient'')X
2983(language)X
3302(available,)X
3641(particularly)X
2399 4676(for)N
2513(programs)X
2836(requiring)X
3150(much)X
3348(computation.)X
2599 4800(But)N
2769(Fortran)X
2 f
3060(is)X
1 f
3168(unpleasant.)X
3605(Perhaps)X
3913(the)X
2399 4896(worst)N
2604(de\256ciency)X
2961(is)X
3040(in)X
3128(the)X
3252(control)X
3505(\257ow)X
3673(statements)X
2399 4992(\320)N
2533(conditional)X
2947(branches)X
3287(and)X
3456(loops)X
3682(\320)X
3815(which)X
2399 5088(express)N
2662(the)X
2782(logic)X
2964(of)X
3053(the)X
3172(program.)X
3505(The)X
3651(conditional)X
2399 5184(statements)N
2775(in)X
2874(Fortran)X
3147(are)X
3283(primitive.)X
3653(The)X
3815(Arith-)X
2399 5280(metic)N
8 s
2599(IF)X
10 s
2678(forces)X
2897(the)X
3016(user)X
3171(into)X
3316(at)X
3395(least)X
3563(two)X
3704(statement)X
2399 5376(numbers)N
2715(and)X
2870(two)X
3029(\(implied\))X
8 s
3366(GOTO)X
10 s
3543('s;)X
3662(it)X
3745(leads)X
3949(to)X
2399 5472(unintelligible)N
2848(code,)X
3043(and)X
3182(is)X
3258(eschewed)X
3593(by)X
3695(good)X
3877(pro-)X

2 p
%%Page: 2 2
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-2)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
555 672(grammers.)N
952(The)X
1113(Logical)X
8 s
1394(IF)X
10 s
1487(is)X
1576(better,)X
1815(in)X
1913(that)X
2069(the)X
555 768(test)N
692(part)X
842(can)X
979(be)X
1080(stated)X
1292(clearly,)X
1556(but)X
1683(hopelessly)X
2046(res-)X
555 864(trictive)N
812(because)X
1097(the)X
1225(statement)X
1562(that)X
1712(follows)X
1982(the)X
8 s
2110(IF)X
10 s
555 960(can)N
708(only)X
891(be)X
1008(one)X
1165(Fortran)X
1442(statement)X
1789(\(with)X
1998(some)X
2 f
555 1056(further)N
1 f
803(restrictions!\).)X
1278(And)X
1441(of)X
1533(course)X
1768(there)X
1954(can)X
2091(be)X
555 1152(no)N
8 s
667(ELSE)X
10 s
852(part)X
1009(to)X
1103(a)X
1171(Fortran)X
8 s
1439(IF)X
10 s
1496(:)X
1550(there)X
1743(is)X
1828(no)X
1940(way)X
2105(to)X
555 1248(specify)N
839(an)X
967(alternative)X
1357(action)X
1604(if)X
1704(the)X
8 s
1853(IF)X
10 s
1961(is)X
2065(not)X
555 1344(satis\256ed.)N
755 1468(The)N
913(Fortran)X
8 s
1182(DO)X
10 s
1307(restricts)X
1594(the)X
1725(user)X
1891(to)X
1985(going)X
555 1564(forward)N
831(in)X
914(an)X
1011(arithmetic)X
1357(progression.)X
1791(It)X
1860(is)X
1933(\256ne)X
2073(for)X
555 1660(``1)N
672(to)X
757(N)X
838(in)X
922(steps)X
1104(of)X
1193(1)X
1255(\(or)X
1371(2)X
1433(or)X
1522(...\)'',)X
1705(but)X
1829(there)X
2012(is)X
2087(no)X
555 1756(direct)N
775(way)X
946(to)X
1045(go)X
1162(backwards,)X
1563(or)X
1667(even)X
1855(\(in)X
1980(ANSI)X
555 1852(Fortran[2]\))N
941(to)X
1032(go)X
1141(from)X
1326(1)X
1395(to)X
1486(N)X
9 f
1544(-)X
1 f
1588(1.)X
1696(And)X
1862(of)X
1957(course)X
555 1948(the)N
8 s
688(DO)X
10 s
815(is)X
903(useless)X
1165(if)X
1249(one's)X
1458(problem)X
1759(doesn't)X
2029(map)X
555 2044(into)N
699(an)X
795(arithmetic)X
1140(progression.)X
755 2168(The)N
913(result)X
1124(of)X
1224(these)X
1422(failings)X
1694(is)X
1779(that)X
1931(Fortran)X
555 2264(programs)N
893(must)X
1083(be)X
1193(written)X
1454(with)X
1630(numerous)X
1980(labels)X
555 2360(and)N
703(branches.)X
1061(The)X
1218(resulting)X
1530(code)X
1713(is)X
1797(particularly)X
555 2456(dif\256cult)N
835(to)X
924(read)X
1090(and)X
1233(understand,)X
1632(and)X
1775(thus)X
1935(hard)X
2105(to)X
555 2552(debug)N
771(and)X
907(modify.)X
755 2676(When)N
1000(one)X
1169(is)X
1275(faced)X
1502(with)X
1696(an)X
1824(unpleasant)X
555 2772(language,)N
900(a)X
971(useful)X
1202(technique)X
1549(is)X
1637(to)X
1733(de\256ne)X
1963(a)X
2033(new)X
555 2868(language)N
875(that)X
1025(overcomes)X
1403(the)X
1531(de\256ciencies,)X
1960(and)X
2105(to)X
555 2964(translate)N
852(it)X
921(into)X
1070(the)X
1193(unpleasant)X
1561(one)X
1702(with)X
1869(a)X
1930(prepro-)X
555 3060(cessor.)N
831(This)X
1008(is)X
1096(the)X
1229(approach)X
1558(taken)X
1766(with)X
1942(Ratfor.)X
555 3156(\(The)N
734(preprocessor)X
1172(idea)X
1333(is)X
1413(of)X
1507(course)X
1743(not)X
1871(new,)X
2051(and)X
555 3252(preprocessors)N
1032(for)X
1161(Fortran)X
1432(are)X
1566(especially)X
1922(popular)X
555 3348(today.)N
830(A)X
944(recent)X
1197(listing)X
1452([3])X
1602(of)X
1725(preprocessors)X
555 3444(shows)N
798(more)X
1006(than)X
1186(50,)X
1328(of)X
1437(which)X
1675(at)X
1775(least)X
1964(half)X
2131(a)X
555 3540(dozen)N
767(are)X
886(widely)X
1124(available.\))X
3 f
555 3732(2.)N
655(LANGUAGE)X
1137(DESCRIPTION)X
555 3924(Design)N
1 f
755 4048(Ratfor)N
987(attempts)X
1285(to)X
1374(retain)X
1584(the)X
1709(merits)X
1936(of)X
2029(For-)X
555 4144(tran)N
727(\(universality,)X
1199(portability,)X
1599(ef\256ciency\))X
1989(while)X
555 4240(hiding)N
823(the)X
984(worst)X
1225(Fortran)X
1524(inadequacies.)X
2042(The)X
555 4336(language)N
2 f
870(is)X
1 f
948(Fortran)X
1209(except)X
1443(for)X
1561(two)X
1705(aspects.)X
2001(First,)X
555 4432(since)N
768(control)X
1043(\257ow)X
1233(is)X
1334(central)X
1601(to)X
1711(any)X
1875(program,)X
555 4528(regardless)N
906(of)X
998(the)X
1121(speci\256c)X
1391(application,)X
1791(the)X
1913(primary)X
555 4624(task)N
719(of)X
820(Ratfor)X
1059(is)X
1146(to)X
1242(conceal)X
1522(this)X
1671(part)X
1830(of)X
1931(Fortran)X
555 4720(from)N
745(the)X
877(user,)X
1065(by)X
1178(providing)X
1522(decent)X
1765(control)X
2025(\257ow)X
555 4816(structures.)N
956(These)X
1197(structures)X
1558(are)X
1705(suf\256cient)X
2051(and)X
555 4912(comfortable)N
986(for)X
1123(structured)X
1487(programming)X
1965(in)X
2069(the)X
555 5008(narrow)N
825(sense)X
1041(of)X
1150(programming)X
1627(without)X
8 s
1912(GOTO)X
10 s
2089('s.)X
555 5104(Second,)N
841(since)X
1036(the)X
1164(preprocessor)X
1605(must)X
1790(examine)X
2091(an)X
555 5200(entire)N
760(program)X
1054(to)X
1138(translate)X
1432(the)X
1552(control)X
1801(structure,)X
2123(it)X
555 5296(is)N
636(possible)X
926(at)X
1012(the)X
1138(same)X
1331(time)X
1501(to)X
1591(clean)X
1788(up)X
1895(many)X
2100(of)X
555 5392(the)N
682(``cosmetic'')X
1104(de\256ciencies)X
1511(of)X
1606(Fortran,)X
1890(and)X
2034(thus)X
555 5488(provide)N
847(a)X
929(language)X
1265(which)X
1507(is)X
1606(easier)X
1840(and)X
2002(more)X
555 5584(pleasant)N
838(to)X
920(read)X
1079(and)X
1215(write.)X
755 5708(Beyond)N
1037(these)X
1235(two)X
1388(aspects)X
1653(\320)X
1766(control)X
2025(\257ow)X
555 5804(and)N
704(cosmetics)X
1053(\320)X
1166(Ratfor)X
1404(does)X
1583(nothing)X
1859(about)X
2069(the)X
2399 672(host)N
2559(of)X
2652(other)X
2843(weaknesses)X
3244(of)X
3337(Fortran.)X
3639(Although)X
3967(it)X
2399 768(would)N
2630(be)X
2737(straightforward)X
3263(to)X
3356(extend)X
3600(it)X
3674(to)X
3766(provide)X
2399 864(character)N
2755(strings,)X
3048(for)X
3202(example,)X
3554(they)X
3751(are)X
3909(not)X
2399 960(needed)N
2650(by)X
2753(everyone,)X
3091(and)X
3230(of)X
3319(course)X
3551(the)X
3671(preproces-)X
2399 1056(sor)N
2529(would)X
2761(be)X
2869(harder)X
3107(to)X
3200(implement.)X
3613(Throughout,)X
2399 1152(the)N
2531(design)X
2774(principle)X
3092(which)X
3321(has)X
3461(determined)X
3855(what)X
2399 1248(should)N
2636(be)X
2736(in)X
2822(Ratfor)X
3050(and)X
3189(what)X
3368(should)X
3604(not)X
3729(has)X
3859(been)X
2 f
2399 1344(Ratfor)N
2631(doesn't)X
2895(know)X
3092(any)X
3236(Fortran.)X
1 f
3556(Any)X
3721(language)X
2399 1440(feature)N
2666(which)X
2905(would)X
3148(require)X
3419(that)X
3581(Ratfor)X
3828(really)X
2399 1536(understand)N
2792(Fortran)X
3069(has)X
3217(been)X
3410(omitted.)X
3735(We)X
3887(will)X
2399 1632(return)N
2617(to)X
2705(this)X
2846(point)X
3036(in)X
3124(the)X
3248(section)X
3501(on)X
3606(implementa-)X
2399 1728(tion.)N
2599 1852(Even)N
2805(within)X
3050(the)X
3188(con\256nes)X
3495(of)X
3602(control)X
3869(\257ow)X
2399 1948(and)N
2541(cosmetics,)X
2903(we)X
3023(have)X
3201(attempted)X
3542(to)X
3629(be)X
3730(selective)X
2399 2044(in)N
2490(what)X
2675(features)X
2958(to)X
3048(provide.)X
3361(The)X
3514(intent)X
3724(has)X
3859(been)X
2399 2140(to)N
2500(provide)X
2784(a)X
2859(small)X
3071(set)X
3199(of)X
3305(the)X
3441(most)X
3634(useful)X
3868(con-)X
2399 2236(structs,)N
2650(rather)X
2860(than)X
3020(to)X
3104(throw)X
3313(in)X
3397(everything)X
3762(that)X
3904(has)X
2399 2332(ever)N
2558(been)X
2730(thought)X
2994(useful)X
3210(by)X
3310(someone.)X
2599 2456(The)N
2745(rest)X
2882(of)X
2970(this)X
3105(section)X
3352(contains)X
3639(an)X
3735(informal)X
2399 2552(description)N
2789(of)X
2890(the)X
3022(Ratfor)X
3261(language.)X
3625(The)X
3784(control)X
2399 2648(\257ow)N
2564(aspects)X
2819(will)X
2966(be)X
3065(quite)X
3248(familiar)X
3525(to)X
3609(readers)X
3864(used)X
2399 2744(to)N
2483(languages)X
2826(like)X
2968(Algol,)X
3192(PL/I,)X
3375(Pascal,)X
3621(etc.,)X
3776(and)X
3913(the)X
2399 2840(cosmetic)N
2739(changes)X
3053(are)X
3206(equally)X
3496(straightforward.)X
2399 2936(We)N
2574(shall)X
2787(concentrate)X
3220(on)X
3362(showing)X
3695(what)X
3913(the)X
2399 3032(language)N
2709(looks)X
2902(like.)X
3 f
2399 3224(Statement)N
2767(Grouping)X
1 f
2599 3348(Fortran)N
2879(provides)X
3199(no)X
3323(way)X
3501(to)X
3607(group)X
3837(state-)X
2399 3444(ments)N
2617(together,)X
2927(short)X
3114(of)X
3208(making)X
3475(them)X
3661(into)X
3811(a)X
3873(sub-)X
2399 3540(routine.)N
2701(The)X
2861(standard)X
3168(construction)X
3599(``if)X
3736(a)X
3806(condi-)X
2399 3636(tion)N
2543(is)X
2616(true,)X
2781(do)X
2881(this)X
3016(group)X
3223(of)X
3310(things,'')X
3599(for)X
3713(example,)X
2599 3780(if)N
2668(\(x)X
2755(>)X
2820(100\))X
2829 3876({)N
2887(call)X
3023(error\("x>100"\);)X
3547(err)X
3657(=)X
3722(1;)X
3059 3972(return)N
3271(})X
2399 4116(cannot)N
2648(be)X
2759(written)X
3021(directly)X
3301(in)X
3398(Fortran.)X
3709(Instead)X
3975(a)X
2399 4212(programmer)N
2830(is)X
2917(forced)X
3157(to)X
3253(translate)X
3559(this)X
3708(relatively)X
2399 4308(clear)N
2589(thought)X
2866(into)X
3023(murky)X
3265(Fortran,)X
3554(by)X
3667(stating)X
3913(the)X
2399 4404(negative)N
2727(condition)X
3085(and)X
3257(branching)X
3634(around)X
3913(the)X
2399 4500(group)N
2606(of)X
2693(statements:)X
2829 4644(if)N
2898(\(x)X
2985(.le.)X
3103(100\))X
3270(goto)X
3432(10)X
3059 4740(call)N
3195(error\(5hx>100\))X
3059 4836(err)N
3169(=)X
3234(1)X
3059 4932(return)N
2599 5028(10)N
2829(...)X
2399 5172(When)N
2615(the)X
2737(program)X
3033(doesn't)X
3293(work,)X
3502(or)X
3592(when)X
3789(it)X
3856(must)X
2399 5268(be)N
2508(modi\256ed,)X
2845(this)X
2993(must)X
3181(be)X
3290(translated)X
3635(back)X
3819(into)X
3975(a)X
2399 5364(clearer)N
2639(form)X
2815(before)X
3041(one)X
3177(can)X
3309(be)X
3405(sure)X
3559(what)X
3735(it)X
3799(does.)X
2599 5488(Ratfor)N
2874(eliminates)X
3273(this)X
3458(error-prone)X
3895(and)X
2399 5584(confusing)N
2774(back-and-forth)X
3311(translation;)X
3730(the)X
3887(\256rst)X
2399 5680(form)N
2 f
2577(is)X
1 f
2652(the)X
2772(way)X
2928(the)X
3047(computation)X
3468(is)X
3542(written)X
3790(in)X
3873(Rat-)X
2399 5776(for.)N
2569(A)X
2663(group)X
2886(of)X
2988(statements)X
3361(can)X
3508(be)X
3619(treated)X
3873(as)X
3975(a)X

3 p
%%Page: 3 3
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3754(PS2:8-3)X
555 672(unit)N
700(by)X
800(enclosing)X
1127(them)X
1307(in)X
1389(the)X
1507(braces)X
1733({)X
1791(and)X
1927(}.)X
2025(This)X
555 768(is)N
629(true)X
775(throughout)X
1147(the)X
1266(language:)X
1599(wherever)X
1920(a)X
1976(single)X
555 864(Ratfor)N
781(statement)X
1109(can)X
1242(be)X
1339(used,)X
1527(there)X
1709(can)X
1842(be)X
1939(several)X
555 960(enclosed)N
859(in)X
944(braces.)X
1212(\(Braces)X
1480(seem)X
1667(clearer)X
1909(and)X
2047(less)X
555 1056(obtrusive)N
878(than)X
3 f
1041(begin)X
1 f
1252(and)X
3 f
1393(end)X
1 f
1542(or)X
3 f
1634(do)X
1 f
1743(and)X
3 f
1883(end)X
1 f
2007(,)X
2051(and)X
555 1152(of)N
646(course)X
3 f
879(do)X
1 f
986(and)X
3 f
1125(end)X
1 f
1272(already)X
1532(have)X
1707(Fortran)X
1966(mean-)X
555 1248(ings.\))N
755 1372(Cosmetics)N
1125(contribute)X
1487(to)X
1586(the)X
1721(readability)X
2100(of)X
555 1468(code,)N
751(and)X
891(thus)X
1048(to)X
1134(its)X
1233(understandability.)X
1853(The)X
2001(char-)X
555 1564(acter)N
769(``>'')X
979(is)X
1088(clearer)X
1364(than)X
8 s
1558(``.GT.'')X
10 s
1759(,)X
1835(so)X
1962(Ratfor)X
555 1660(translates)N
912(it)X
1010(appropriately,)X
1512(along)X
1744(with)X
1939(several)X
555 1756(other)N
745(similar)X
992(shorthands.)X
1403(Although)X
1729(many)X
1931(Fortran)X
555 1852(compilers)N
898(permit)X
1134(character)X
1457(strings)X
1697(in)X
1785(quotes)X
2020(\(like)X
3 f
555 1948("x>100")N
1 f
849(\),)X
916(quotes)X
1145(are)X
1264(not)X
1386(allowed)X
1660(in)X
8 s
1742(ANSI)X
10 s
1911(Fortran,)X
555 2044(so)N
648(Ratfor)X
875(converts)X
1169(it)X
1235(into)X
1380(the)X
1499(right)X
1671(number)X
1937(of)X
3 f
2025(H)X
1 f
2087('s:)X
555 2140(computers)N
909(count)X
1107(better)X
1310(than)X
1468(people)X
1702(do.)X
755 2264(Ratfor)N
992(is)X
1077(a)X
1145(free-form)X
1486(language:)X
1829(statements)X
555 2360(may)N
719(appear)X
960(anywhere)X
1299(on)X
1405(a)X
1467(line,)X
1633(and)X
1775(several)X
2029(may)X
555 2456(appear)N
796(on)X
902(one)X
1044(line)X
1190(if)X
1265(they)X
1429(are)X
1554(separated)X
1884(by)X
1989(semi-)X
555 2552(colons.)N
828(The)X
977(example)X
1273(above)X
1488(could)X
1689(also)X
1841(be)X
1940(written)X
555 2648(as)N
755 2792(if)N
824(\(x)X
911(>)X
976(100\))X
1143({)X
985 2888(call)N
1121(error\("x>100"\))X
985 2984(err)N
1095(=)X
1160(1)X
985 3080(return)N
755 3176(})N
555 3320(In)N
647(this)X
787(case,)X
970(no)X
1074(semicolon)X
1427(is)X
1504(needed)X
1756(at)X
1838(the)X
1960(end)X
2100(of)X
555 3416(each)N
744(line)X
905(because)X
1201(Ratfor)X
1447(assumes)X
1755(there)X
1957(is)X
2051(one)X
555 3512(statement)N
882(per)X
1005(line)X
1145(unless)X
1365(told)X
1509(otherwise.)X
755 3636(Of)N
867(course,)X
1124(if)X
1200(the)X
1324(statement)X
1657(that)X
1803(follows)X
2069(the)X
3 f
555 3732(if)N
1 f
634(is)X
717(a)X
783(single)X
1004(statement)X
1341(\(Ratfor)X
1603(or)X
1699(otherwise\),)X
2087(no)X
555 3828(braces)N
781(are)X
900(needed:)X
755 3972(if)N
824(\(y)X
911(<=)X
1021(0.0)X
1141(&)X
1223(z)X
1279(<=)X
1389(0.0\))X
985 4068(write\(6,)N
1257(20\))X
1384(y,)X
1464(z)X
555 4212(No)N
693(continuation)X
1133(need)X
1325(be)X
1441(indicated)X
1775(because)X
2069(the)X
555 4308(statement)N
892(is)X
975(clearly)X
1224(not)X
1356(\256nished)X
1638(on)X
1747(the)X
1874(\256rst)X
2027(line.)X
555 4404(In)N
655(general)X
925(Ratfor)X
1163(continues)X
1503(lines)X
1687(when)X
1894(it)X
1971(seems)X
555 4500(obvious)N
847(that)X
1006(they)X
1183(are)X
1321(not)X
1462(yet)X
1599(done.)X
1834(\(The)X
2024(con-)X
555 4596(tinuation)N
859(convention)X
1235(is)X
1308(discussed)X
1635(in)X
1717(detail)X
1915(later.\))X
755 4720(Although)N
1116(a)X
1211(free-form)X
1579(language)X
1927(permits)X
555 4816(wide)N
750(latitude)X
1029(in)X
1130(formatting)X
1507(styles,)X
1747(it)X
1829(is)X
1920(wise)X
2105(to)X
555 4912(pick)N
719(one)X
861(that)X
1007(is)X
1086(readable,)X
1405(then)X
1569(stick)X
1746(to)X
1834(it.)X
1944(In)X
2037(par-)X
555 5008(ticular,)N
819(proper)X
1068(indentation)X
1466(is)X
1557(vital,)X
1757(to)X
1857(make)X
2069(the)X
555 5104(logical)N
811(structure)X
1130(of)X
1235(the)X
1371(program)X
1680(obvious)X
1970(to)X
2069(the)X
555 5200(reader.)N
3 f
555 5488(The)N
708(``else'')X
961(Clause)X
1 f
755 5612(Ratfor)N
985(provides)X
1286(an)X
3 f
1387(else)X
1 f
1536(statement)X
1867(to)X
1953(handle)X
555 5708(the)N
689(construction)X
1121(``if)X
1260(a)X
1332(condition)X
1669(is)X
1757(true,)X
1937(do)X
2052(this)X
555 5804(thing,)N
2 f
759(otherwise)X
1 f
1090(do)X
1190(that)X
1330(thing.'')X
2599 720(if)N
2668(\(a)X
2751(<=)X
2861(b\))X
2829 816({)N
2887(sw)X
2996(=)X
3061(0;)X
3143(write\(6,)X
3415(1\))X
3502(a,)X
3578(b)X
3638(})X
2599 912(else)N
2829 1008({)N
2887(sw)X
2996(=)X
3061(1;)X
3143(write\(6,)X
3415(1\))X
3502(b,)X
3582(a)X
3638(})X
2399 1152(This)N
2573(writes)X
2801(out)X
2935(the)X
3065(smaller)X
3333(of)X
3 f
3431(a)X
1 f
3502(and)X
3 f
3649(b)X
1 f
3693(,)X
3744(then)X
3913(the)X
2399 1248(larger,)N
2627(and)X
2763(sets)X
3 f
2903(sw)X
1 f
3012(appropriately.)X
2599 1372(The)N
2745(Fortran)X
3002(equivalent)X
3356(of)X
3443(this)X
3578(code)X
3750(is)X
3823(circu-)X
2399 1468(itous)N
2574(indeed:)X
2829 1612(if)N
2898(\(a)X
2981(.gt.)X
3103(b\))X
3190(goto)X
3352(10)X
3059 1708(sw)N
3168(=)X
3233(0)X
3059 1804(write\(6,)N
3331(1\))X
3418(a,)X
3494(b)X
3059 1900(goto)N
3221(20)X
2599 1996(10)N
2829(sw)X
2938(=)X
3003(1)X
2829 2092(write\(6,)N
3101(1\))X
3188(b,)X
3268(a)X
2599 2188(20)N
2829(...)X
2399 2332(This)N
2582(is)X
2676(a)X
2753(mechanical)X
3160(translation;)X
3561(shorter)X
3824(forms)X
2399 2428(exist,)N
2596(as)X
2688(they)X
2851(do)X
2956(for)X
3075(many)X
3278(similar)X
3525(situations.)X
3896(But)X
2399 2524(all)N
2524(translations)X
2938(suffer)X
3171(from)X
3371(the)X
3513(same)X
3722(problem:)X
2399 2620(since)N
2588(they)X
2750(are)X
2873(translations,)X
3286(they)X
3448(are)X
3571(less)X
3715(clear)X
3895(and)X
2399 2716(understandable)N
2909(than)X
3071(code)X
3247(that)X
3391(is)X
3468(not)X
3594(a)X
3653(translation.)X
2399 2812(To)N
2512(understand)X
2888(the)X
3010(Fortran)X
3270(version,)X
3550(one)X
3690(must)X
3868(scan)X
2399 2908(the)N
2538(entire)X
2762(program)X
3075(to)X
3178(make)X
3392(sure)X
3566(that)X
3726(no)X
3846(other)X
2399 3004(statement)N
2733(branches)X
3046(to)X
3135(statements)X
3500(10)X
3606(or)X
3699(20)X
3805(before)X
2399 3100(one)N
2542(knows)X
2777(that)X
2923(indeed)X
3163(this)X
3304(is)X
3383(an)X
3 f
3485(if-else)X
1 f
3712(construc-)X
2399 3196(tion.)N
2584(With)X
2765(the)X
2884(Ratfor)X
3110(version,)X
3386(there)X
3567(is)X
3640(no)X
3740(question)X
2399 3292(about)N
2604(how)X
2769(one)X
2912(gets)X
3068(to)X
3157(the)X
3282(parts)X
3465(of)X
3559(the)X
3684(statement.)X
2399 3388(The)N
3 f
2560(if-else)X
1 f
2797(is)X
2886(a)X
2958(single)X
3184(unit,)X
3363(which)X
3594(can)X
3741(be)X
3852(read,)X
2399 3484(understood,)N
2799(and)X
2939(ignored)X
3208(if)X
3281(not)X
3407(relevant.)X
3729(The)X
3877(pro-)X
2399 3580(gram)N
2584(says)X
2742(what)X
2918(it)X
2982(means.)X
2599 3704(As)N
2718(before,)X
2974(if)X
3053(the)X
3181(statement)X
3517(following)X
3857(an)X
3 f
3962(if)X
1 f
2399 3800(or)N
2506(an)X
3 f
2621(else)X
1 f
2785(is)X
2877(a)X
2952(single)X
3182(statement,)X
3548(no)X
3667(braces)X
3912(are)X
2399 3896(needed:)N
2599 4040(if)N
2668(\(a)X
2751(<=)X
2861(b\))X
2829 4136(sw)N
2938(=)X
3003(0)X
2599 4232(else)N
2829 4328(sw)N
2938(=)X
3003(1)X
2599 4500(The)N
2744(syntax)X
2973(of)X
3060(the)X
3 f
3178(if)X
1 f
3247(statement)X
3574(is)X
2599 4644(if)N
2668(\()X
2 f
2695(legal)X
2875(Fortran)X
3148(condition)X
1 f
3450(\))X
2 f
2829 4740(Ratfor)N
3053(statement)X
1 f
2599 4836(else)N
2 f
2829 4932(Ratfor)N
3053(statement)X
1 f
2399 5076(where)N
2618(the)X
3 f
2738(else)X
1 f
2885(part)X
3032(is)X
3107(optional.)X
3431(The)X
2 f
3577(legal)X
3758(Fortran)X
2399 5172(condition)N
1 f
2737(is)X
2826(anything)X
3142(that)X
3298(can)X
3446(legally)X
3700(go)X
3816(into)X
3975(a)X
2399 5268(Fortran)N
2678(Logical)X
8 s
2966(IF)X
10 s
3023(.)X
3086(Ratfor)X
3333(does)X
3522(not)X
3666(check)X
3896(this)X
2399 5364(clause,)N
2648(since)X
2841(it)X
2913(does)X
3088(not)X
3218(know)X
3423(enough)X
3686(Fortran)X
3949(to)X
2399 5460(know)N
2604(what)X
2787(is)X
2867(permitted.)X
3241(The)X
2 f
3393(Ratfor)X
3624(statement)X
1 f
3958(is)X
2399 5556(any)N
2539(Ratfor)X
2767(or)X
2857(Fortran)X
3116(statement,)X
3466(or)X
3556(any)X
3695(collection)X
2399 5652(of)N
2486(them)X
2666(in)X
2748(braces.)X

4 p
%%Page: 4 4
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-4)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
3 f
555 672(Nested)N
807(if's)X
1 f
755 796(Since)N
959(the)X
1082(statement)X
1414(that)X
1559(follows)X
1824(an)X
3 f
1925(if)X
1 f
1999(or)X
2091(an)X
3 f
555 892(else)N
1 f
733(can)X
898(be)X
1027(any)X
1196(Ratfor)X
1454(statement,)X
1834(this)X
2002(leads)X
555 988(immediately)N
998(to)X
1103(the)X
1243(possibility)X
1617(of)X
1726(another)X
3 f
2009(if)X
1 f
2100(or)X
3 f
555 1084(else)N
1 f
680(.)X
726(As)X
841(a)X
903(useful)X
1124(example,)X
1441(consider)X
1738(this)X
1878(problem:)X
555 1180(the)N
684(variable)X
3 f
974(f)X
1 f
1032(is)X
1116(to)X
1209(be)X
1316(set)X
1436(to)X
9 f
1529(-)X
1 f
1573(1)X
1644(if)X
3 f
1724(x)X
1 f
1795(is)X
1879(less)X
2029(than)X
555 1276(zero,)N
735(to)X
818(+1)X
924(if)X
3 f
994(x)X
1 f
1055(is)X
1129(greater)X
1374(than)X
1533(100,)X
1694(and)X
1831(to)X
1914(0)X
1975(other-)X
555 1372(wise.)N
762(Then)X
947(in)X
1029(Ratfor,)X
1274(we)X
1388(write)X
755 1516(if)N
824(\(x)X
911(<)X
976(0\))X
985 1612(f)N
1032(=)X
9 f
1097(-)X
1 f
1141(1)X
755 1708(else)N
900(if)X
969(\(x)X
1056(>)X
1121(100\))X
985 1804(f)N
1032(=)X
1097(+1)X
755 1900(else)N
985 1996(f)N
1032(=)X
1097(0)X
555 2140(Here)N
745(the)X
876(statement)X
1216(after)X
1397(the)X
1528(\256rst)X
3 f
1684(else)X
1 f
1841(is)X
1926(another)X
3 f
555 2236(if-else)N
1 f
756(.)X
822(Logically)X
1175(it)X
1265(is)X
1363(just)X
1523(a)X
1604(single)X
1840(statement,)X
555 2332(although)N
855(it)X
919(is)X
992(rather)X
1200(complicated.)X
755 2456(This)N
920(code)X
1095(says)X
1256(what)X
1435(it)X
1502(means.)X
1770(Any)X
1931(version)X
555 2552(written)N
831(in)X
942(straight)X
1230(Fortran)X
1514(will)X
1686(necessarily)X
2091(be)X
555 2648(indirect)N
821(because)X
1097(Fortran)X
1354(does)X
1522(not)X
1644(let)X
1744(you)X
1884(say)X
2011(what)X
555 2744(you)N
705(mean.)X
949(And)X
1117(as)X
1213(always,)X
1485(clever)X
1711(shortcuts)X
2029(may)X
555 2840(turn)N
724(out)X
866(to)X
968(be)X
1084(too)X
1225(clever)X
1461(to)X
1562(understand)X
1953(a)X
2028(year)X
555 2936(from)N
731(now.)X
755 3060(Following)N
1111(an)X
3 f
1215(else)X
1 f
1368(with)X
1538(an)X
3 f
1642(if)X
1 f
1719(is)X
1800(one)X
1944(way)X
2105(to)X
555 3156(write)N
756(a)X
828(multi-way)X
1193(branch)X
1448(in)X
1546(Ratfor.)X
1827(In)X
1930(general)X
555 3252(the)N
673(structure)X
755 3396(if)N
824(\(...\))X
9 f
985 3492(-)N
1049(-)X
1113(-)X
1 f
755 3588(else)N
900(if)X
969(\(...\))X
9 f
985 3684(-)N
1049(-)X
1113(-)X
1 f
755 3780(else)N
900(if)X
969(\(...\))X
9 f
985 3876(-)N
1049(-)X
1113(-)X
1 f
775 3972(...)N
755 4068(else)N
9 f
985 4164(-)N
1049(-)X
1113(-)X
1 f
555 4308(provides)N
865(a)X
934(way)X
1101(to)X
1196(specify)X
1461(the)X
1592(choice)X
1835(of)X
1935(exactly)X
555 4404(one)N
697(of)X
790(several)X
1044(alternatives.)X
1480(\(Ratfor)X
1737(also)X
1891(provides)X
555 4500(a)N
3 f
627(switch)X
1 f
880(statement)X
1222(which)X
1453(does)X
1635(the)X
1768(same)X
1968(job)X
2105(in)X
555 4596(certain)N
806(special)X
1061(cases;)X
1284(in)X
1377(more)X
1573(general)X
1841(situations,)X
555 4692(we)N
679(have)X
861(to)X
953(make)X
1157(do)X
1267(with)X
1439(spare)X
1639(parts.\))X
1871(The)X
2025(tests)X
555 4788(are)N
676(laid)X
818(out)X
942(in)X
1026(sequence,)X
1363(and)X
1501(each)X
1671(one)X
1808(is)X
1882(followed)X
555 4884(by)N
656(the)X
775(code)X
948(associated)X
1299(with)X
1462(it.)X
1567(Read)X
1753(down)X
1952(the)X
2070(list)X
555 4980(of)N
659(decisions)X
994(until)X
1176(one)X
1328(is)X
1417(found)X
1640(that)X
1796(is)X
1885(satis\256ed.)X
555 5076(The)N
717(code)X
906(associated)X
1272(with)X
1450(this)X
1601(condition)X
1939(is)X
2028(exe-)X
555 5172(cuted,)N
789(and)X
945(then)X
1123(the)X
1260(entire)X
1482(structure)X
1802(is)X
1894(\256nished.)X
555 5268(The)N
705(trailing)X
3 f
961(else)X
1 f
1111(part)X
1261(handles)X
1531(the)X
1653(``default'')X
2008(case,)X
555 5364(where)N
773(none)X
950(of)X
1038(the)X
1156(other)X
1341(conditions)X
1694(apply.)X
1932(If)X
2006(there)X
555 5460(is)N
628(no)X
728(default)X
971(action,)X
1207(this)X
1342(\256nal)X
3 f
1504(else)X
1 f
1649(part)X
1794(is)X
1867(omitted:)X
2599 720(if)N
2668(\(x)X
2755(<)X
2820(0\))X
2829 816(x)N
2889(=)X
2954(0)X
2599 912(else)N
2744(if)X
2813(\(x)X
2900(>)X
2965(100\))X
2829 1008(x)N
2889(=)X
2954(100)X
3 f
2399 1248(if-else)N
2620(ambiguity)X
1 f
2599 1372(There)N
2817(is)X
2900(one)X
3046(thing)X
3239(to)X
3330(notice)X
3555(about)X
3762(compli-)X
2399 1468(cated)N
2602(structures)X
2946(involving)X
3284(nested)X
3 f
3521(if)X
1 f
3570('s)X
3660(and)X
3 f
3808(else)X
1 f
3933('s.)X
2399 1564(Consider)N
2599 1708(if)N
2668(\(x)X
2755(>)X
2820(0\))X
2829 1804(if)N
2898(\(y)X
2985(>)X
3050(0\))X
3059 1900(write\(6,)N
3331(1\))X
3418(x,)X
3498(y)X
2829 1996(else)N
3059 2092(write\(6,)N
3331(2\))X
3418(y)X
2399 2236(There)N
2623(are)X
2757(two)X
3 f
2912(if)X
1 f
2961('s)X
3054(and)X
3205(only)X
3382(one)X
3 f
3533(else)X
1 f
3658(.)X
3713(Which)X
3 f
3962(if)X
1 f
2399 2332(does)N
2566(the)X
3 f
2684(else)X
1 f
2829(go)X
2929(with?)X
2599 2456(This)N
2767(is)X
2846(a)X
2908(genuine)X
3188(ambiguity)X
3538(in)X
3625(Ratfor,)X
3875(as)X
3967(it)X
2399 2552(is)N
2491(in)X
2592(many)X
2809(other)X
3013(programming)X
3487(languages.)X
3886(The)X
2399 2648(ambiguity)N
2748(is)X
2826(resolved)X
3123(in)X
3210(Ratfor)X
3440(\(as)X
3558(elsewhere\))X
3931(by)X
2399 2744(saying)N
2641(that)X
2794(in)X
2889(such)X
3069(cases)X
3272(the)X
3 f
3403(else)X
1 f
3560(goes)X
3739(with)X
3913(the)X
2399 2840(closest)N
2649(previous)X
2956(un-)X
3 f
3063(else)X
1 f
3188('ed)X
3 f
3322(if)X
1 f
3371(.)X
3422(Thus)X
3613(in)X
3706(this)X
3852(case,)X
2399 2936(the)N
3 f
2528(else)X
1 f
2684(goes)X
2862(with)X
3035(the)X
3163(inner)X
3 f
3358(if)X
1 f
3407(,)X
3457(as)X
3554(we)X
3678(have)X
3860(indi-)X
2399 3032(cated)N
2589(by)X
2689(the)X
2807(indentation.)X
2599 3156(It)N
2669(is)X
2742(a)X
2798(wise)X
2965(practice)X
3240(to)X
3322(resolve)X
3574(such)X
3741(cases)X
3931(by)X
2399 3252(explicit)N
2665(braces,)X
2917(just)X
3057(to)X
3144(make)X
3343(your)X
3515(intent)X
3722(clear.)X
3944(In)X
2399 3348(the)N
2517(case)X
2676(above,)X
2908(we)X
3022(would)X
3242(write)X
2599 3492(if)N
2668(\(x)X
2755(>)X
2820(0\))X
2907({)X
2829 3588(if)N
2898(\(y)X
2985(>)X
3050(0\))X
3059 3684(write\(6,)N
3331(1\))X
3418(x,)X
3498(y)X
2829 3780(else)N
3059 3876(write\(6,)N
3331(2\))X
3418(y)X
2599 3972(})N
2399 4116(which)N
2616(does)X
2784(not)X
2906(change)X
3154(the)X
3272(meaning,)X
3588(but)X
3710(leaves)X
3931(no)X
2399 4212(doubt)N
2608(in)X
2697(the)X
2822(reader's)X
3109(mind.)X
3340(If)X
3420(we)X
3540(want)X
3722(the)X
3846(other)X
2399 4308(association,)N
2795(we)X
2 f
2909(must)X
1 f
3080(write)X
2599 4452(if)N
2668(\(x)X
2755(>)X
2820(0\))X
2907({)X
2829 4548(if)N
2898(\(y)X
2985(>)X
3050(0\))X
3059 4644(write\(6,)N
3331(1\))X
3418(x,)X
3498(y)X
2599 4740(})N
2599 4836(else)N
2829 4932(write\(6,)N
3101(2\))X
3188(y)X
3 f
2399 5172(The)N
2552(``switch'')X
2898(Statement)X
1 f
2599 5296(The)N
3 f
2749(switch)X
1 f
2992(statement)X
3323(provides)X
3623(a)X
3683(clean)X
3877(way)X
2399 5392(to)N
2495(express)X
2769(multi-way)X
3131(branches)X
3450(which)X
3679(branch)X
3931(on)X
2399 5488(the)N
2519(value)X
2715(of)X
2804(some)X
2995(integer-valued)X
3481(expression.)X
3886(The)X
2399 5584(syntax)N
2628(is)X

5 p
%%Page: 5 5
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3754(PS2:8-5)X
3 f
755 720(switch)N
993(\()X
2 f
1020(expression)X
3 f
1376(\))X
1423({)X
985 912(case)N
2 f
1148(expr1)X
3 f
1351(:)X
2 f
1215 1008(statements)N
3 f
985 1104(case)N
2 f
1148(expr2,)X
1371(expr3)X
3 f
1574(:)X
2 f
1215 1200(statements)N
3 f
985 1296(...)N
985 1392(default:)N
2 f
1215 1488(statements)N
3 f
755 1584(})N
1 f
755 1756(Each)N
3 f
945(case)X
1 f
1117(is)X
1199(followed)X
1512(by)X
1620(a)X
1684(list)X
1809(of)X
1904(comma-)X
555 1852(separated)N
910(integer)X
1184(expressions.)X
1649(The)X
2 f
1824(expression)X
1 f
555 1948(inside)N
3 f
808(switch)X
1 f
1088(is)X
1203(compared)X
1581(against)X
1869(the)X
2028(case)X
555 2044(expressions)N
2 f
958(expr1,)X
1190(expr2,)X
1 f
1422(and)X
1567(so)X
1666(on)X
1774(in)X
1864(turn)X
2021(until)X
555 2140(one)N
692(matches,)X
996(at)X
1075(which)X
1292(time)X
1455(the)X
1573(statements)X
1931(follow-)X
555 2236(ing)N
698(that)X
3 f
859(case)X
1 f
1042(are)X
1181(executed.)X
1547(If)X
1641(no)X
1761(cases)X
1971(match)X
2 f
555 2332(expression,)N
1 f
961(and)X
1120(there)X
1324(is)X
1420(a)X
3 f
1498(default)X
1 f
1780(section,)X
2069(the)X
555 2428(statements)N
917(with)X
1082(it)X
1149(are)X
1271(done;)X
1472(if)X
1544(there)X
1728(is)X
1804(no)X
3 f
1907(default,)X
1 f
555 2524(nothing)N
821(is)X
896(done.)X
1114(In)X
1202(all)X
1303(situations,)X
1650(as)X
1738(soon)X
1910(as)X
1998(some)X
555 2620(block)N
758(of)X
850(statements)X
1213(is)X
1290(executed,)X
1620(the)X
1742(entire)X
3 f
1949(switch)X
1 f
555 2716(is)N
657(exited)X
901(immediately.)X
1389(\(Readers)X
1723(familiar)X
2025(with)X
555 2812(C[4])N
734(should)X
979(beware)X
1243(that)X
1394(this)X
1540(behavior)X
1852(is)X
1936(not)X
2069(the)X
555 2908(same)N
740(as)X
827(the)X
945(C)X
3 f
1018(switch)X
1 f
1236(.\))X
3 f
555 3100(The)N
708(``do'')X
920(Statement)X
1 f
755 3224(The)N
3 f
908(do)X
1 f
1020(statement)X
1355(in)X
1445(Ratfor)X
1678(is)X
1758(quite)X
1945(similar)X
555 3320(to)N
642(the)X
8 s
765(DO)X
10 s
882(statement)X
1214(in)X
1301(Fortran,)X
1582(except)X
1817(that)X
1961(it)X
2029(uses)X
555 3416(no)N
684(statement)X
1040(number.)X
1374(The)X
1547(statement)X
1902(number,)X
555 3512(after)N
734(all,)X
865(serves)X
1097(only)X
1269(to)X
1361(mark)X
1556(the)X
1684(end)X
1830(of)X
1927(the)X
8 s
2055(DO)X
10 s
2147(,)X
555 3608(and)N
705(this)X
854(can)X
1000(be)X
1109(done)X
1298(just)X
1446(as)X
1546(easily)X
1766(with)X
1941(braces.)X
555 3704(Thus)N
985 3848(do)N
1085(i)X
1127(=)X
1192(1,)X
1272(n)X
1332({)X
1215 3944(x\(i\))N
1351(=)X
1416(0.0)X
1215 4040(y\(i\))N
1351(=)X
1416(0.0)X
1215 4136(z\(i\))N
1347(=)X
1412(0.0)X
985 4232(})N
555 4376(is)N
628(the)X
746(same)X
931(as)X
985 4520(do)N
1085(10)X
1185(i)X
1227(=)X
1292(1,)X
1372(n)X
1215 4616(x\(i\))N
1351(=)X
1416(0.0)X
1215 4712(y\(i\))N
1351(=)X
1416(0.0)X
1215 4808(z\(i\))N
1347(=)X
1412(0.0)X
755 4904(10)N
985(continue)X
555 5048(The)N
700(syntax)X
929(is:)X
755 5192(do)N
2 f
855(legal-Fortran-DO-text)X
985 5288(Ratfor)N
1209(statement)X
1 f
555 5432(The)N
713(part)X
871(that)X
1024(follows)X
1297(the)X
1428(keyword)X
3 f
1742(do)X
1 f
1858(has)X
1997(to)X
2091(be)X
555 5528(something)N
921(that)X
1074(can)X
1219(legally)X
1470(go)X
1583(into)X
1739(a)X
1807(Fortran)X
8 s
2075(DO)X
10 s
555 5624(statement.)N
949(Thus)X
1156(if)X
1252(a)X
1334(local)X
1536(version)X
1818(of)X
1931(Fortran)X
555 5720(allows)N
8 s
794(DO)X
10 s
916(limits)X
1127(to)X
1219(be)X
1325(expressions)X
1729(\(which)X
1982(is)X
2065(not)X
555 5816(currently)N
873(permitted)X
1208(in)X
8 s
1298(ANSI)X
10 s
1475(Fortran\),)X
1786(they)X
1952(can)X
2091(be)X
2399 672(used)N
2566(in)X
2648(a)X
2704(Ratfor)X
3 f
2929(do.)X
1 f
2599 796(The)N
2 f
2772(Ratfor)X
3024(statement)X
1 f
3379(part)X
3552(will)X
3723(often)X
3935(be)X
2399 892(enclosed)N
2718(in)X
2818(braces,)X
3082(but)X
3222(as)X
3327(with)X
3506(the)X
3 f
3641(if)X
1 f
3690(,)X
3747(a)X
3820(single)X
2399 988(statement)N
2741(need)X
2928(not)X
3065(have)X
3252(braces)X
3493(around)X
3751(it.)X
3869(This)X
2399 1084(code)N
2571(sets)X
2711(an)X
2807(array)X
2993(to)X
3075(zero:)X
2599 1228(do)N
2699(i)X
2741(=)X
2806(1,)X
2886(n)X
2829 1324(x\(i\))N
2965(=)X
3030(0.0)X
2399 1468(Slightly)N
2671(more)X
2856(complicated,)X
2599 1612(do)N
2699(i)X
2741(=)X
2806(1,)X
2886(n)X
2829 1708(do)N
2929(j)X
2971(=)X
3036(1,)X
3116(n)X
3059 1804(m\(i,)N
3210(j\))X
3279(=)X
3344(0)X
2399 1948(sets)N
2539(the)X
2657(entire)X
2860(array)X
3 f
3046(m)X
1 f
3133(to)X
3215(zero,)X
3394(and)X
2599 2092(do)N
2699(i)X
2741(=)X
2806(1,)X
2886(n)X
2829 2188(do)N
2929(j)X
2971(=)X
3036(1,)X
3116(n)X
3059 2284(if)N
3128(\(i)X
3197(<)X
3262(j\))X
3290 2380(m\(i,)N
3441(j\))X
3510(=)X
9 f
3575(-)X
1 f
3619(1)X
3059 2476(else)N
3204(if)X
3273(\(i)X
3342(==)X
3452(j\))X
3290 2572(m\(i,)N
3441(j\))X
3510(=)X
3575(0)X
3059 2668(else)N
3290 2764(m\(i,)N
3441(j\))X
3510(=)X
3575(+1)X
2399 2908(sets)N
2542(the)X
2663(upper)X
2869(triangle)X
3137(of)X
3 f
3227(m)X
1 f
3317(to)X
9 f
3402(-)X
1 f
3446(1,)X
3529(the)X
3650(diagonal)X
3949(to)X
2399 3004(zero,)N
2584(and)X
2726(the)X
2850(lower)X
3059(triangle)X
3329(to)X
3416(+1.)X
3566(\(The)X
3743(operator)X
2399 3100(==)N
2523(is)X
2610(``equals'',)X
2977(that)X
3130(is,)X
3236(``.EQ.''.\))X
3571(In)X
3671(each)X
3852(case,)X
2399 3196(the)N
2534(statement)X
2878(that)X
3035(follows)X
3312(the)X
3 f
3447(do)X
1 f
3568(is)X
3658(logically)X
3975(a)X
2 f
2399 3292(single)N
1 f
2629(statement,)X
2995(even)X
3185(though)X
3445(complicated,)X
3895(and)X
2399 3388(thus)N
2552(needs)X
2755(no)X
2855(braces.)X
3 f
2399 3676(``break'')N
2727(and)X
2875(``next'')X
1 f
2599 3800(Ratfor)N
2841(provides)X
3154(a)X
3227(statement)X
3571(for)X
3702(leaving)X
3975(a)X
2399 3896(loop)N
2571(early,)X
2782(and)X
2928(one)X
3074(for)X
3198(beginning)X
3547(the)X
3674(next)X
3841(itera-)X
2399 3992(tion.)N
3 f
2599(break)X
1 f
2835(causes)X
3081(an)X
3193(immediate)X
3567(exit)X
3722(from)X
3913(the)X
3 f
2399 4088(do)N
1 f
2483(;)X
2534(in)X
2625(effect)X
2838(it)X
2911(is)X
2993(a)X
3058(branch)X
3306(to)X
3397(the)X
3524(statement)X
2 f
3860(after)X
1 f
2399 4184(the)N
3 f
2519(do)X
1 f
2603(.)X
3 f
2645(next)X
1 f
2814(is)X
2889(a)X
2947(branch)X
3188(to)X
3272(the)X
3392(bottom)X
3640(of)X
3729(the)X
3849(loop,)X
2399 4280(so)N
2508(it)X
2590(causes)X
2838(the)X
2974(next)X
3150(iteration)X
3455(to)X
3554(be)X
3667(done.)X
3900(For)X
2399 4376(example,)N
2721(this)X
2866(code)X
3048(skips)X
3242(over)X
3414(negative)X
3715(values)X
3949(in)X
2399 4472(an)N
2495(array:)X
2599 4616(do)N
2699(i)X
2741(=)X
2806(1,)X
2886(n)X
2946({)X
2829 4712(if)N
2898(\(x\(i\))X
3061(<)X
3126(0.0\))X
3059 4808(next)N
2 f
2829 4904(process)N
3094(positive)X
3363(element)X
1 f
2599 5000(})N
3 f
2399 5144(break)N
1 f
2640(and)X
3 f
2797(next)X
1 f
2985(also)X
3155(work)X
3361(in)X
3463(the)X
3601(other)X
3806(Ratfor)X
2399 5240(looping)N
2678(constructions)X
3140(that)X
3295(we)X
3424(will)X
3583(talk)X
3737(about)X
3949(in)X
2399 5336(the)N
2517(next)X
2675(few)X
2816(sections.)X
3 f
2599 5460(break)N
1 f
2845(and)X
3 f
3007(next)X
1 f
3200(can)X
3358(be)X
3480(followed)X
3810(by)X
3935(an)X
2399 5556(integer)N
2648(to)X
2736(indicate)X
3016(breaking)X
3323(or)X
3416(iterating)X
3709(that)X
3855(level)X
2399 5652(of)N
2486(enclosing)X
2813(loop;)X
2997(thus)X

6 p
%%Page: 6 6
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-6)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
755 720(break)N
954(2)X
555 864(exits)N
751(from)X
952(two)X
1117(levels)X
1349(of)X
1461(enclosing)X
1813(loops,)X
2051(and)X
3 f
555 960(break)N
775(1)X
1 f
836(is)X
910(equivalent)X
1265(to)X
3 f
1348(break)X
1 f
(.)S
3 f
1589(next)X
1756(2)X
1 f
1817(iterates)X
2069(the)X
555 1056(second)N
804(enclosing)X
1137(loop.)X
1344(\(Realistically,)X
1816(multi-level)X
3 f
555 1152(break)N
1 f
('s)S
834(and)X
3 f
971(next)X
1 f
1118('s)X
1197(are)X
1317(not)X
1440(likely)X
1643(to)X
1726(be)X
1822(much)X
2020(used)X
555 1248(because)N
842(they)X
1012(lead)X
1178(to)X
1272(code)X
1455(that)X
1606(is)X
1690(hard)X
1864(to)X
1957(under-)X
555 1344(stand)N
744(and)X
880(somewhat)X
1225(risky)X
1405(to)X
1487(change.\))X
3 f
555 1632(The)N
708(``while'')X
1018(Statement)X
1 f
755 1756(One)N
925(of)X
1028(the)X
1161(problems)X
1494(with)X
1671(the)X
1804(Fortran)X
8 s
2075(DO)X
10 s
555 1852(statement)N
898(is)X
987(that)X
1143(it)X
1223(generally)X
1558(insists)X
1793(upon)X
1989(being)X
555 1948(done)N
757(once,)X
975(regardless)X
1347(of)X
1459(its)X
1579(limits.)X
1845(If)X
1944(a)X
2025(loop)X
555 2044(begins)N
755 2188(DO)N
891(I)X
938(=)X
1003(2,)X
1083(1)X
555 2332(this)N
703(will)X
860(typically)X
1173(be)X
1282(done)X
1471(once)X
1655(with)X
3 f
1829(I)X
1 f
1892(set)X
2013(to)X
2107(2,)X
555 2428(even)N
745(though)X
1005(common)X
1322(sense)X
1533(would)X
1770(suggest)X
2047(that)X
555 2524(perhaps)N
840(it)X
919(shouldn't)X
1256(be.)X
1407(Of)X
1527(course)X
1772(a)X
1843(Ratfor)X
3 f
2083(do)X
1 f
555 2620(can)N
687(easily)X
894(be)X
990(preceded)X
1301(by)X
1401(a)X
1457(test)X
755 2764(if)N
824(\(j)X
893(<=)X
1003(k\))X
985 2860(do)N
1085(i)X
1127(=)X
1192(j,)X
1254(k)X
1334({)X
10 f
1215 2956(h)N
1275(h)X
1335(h)X
1 f
985 3052(})N
555 3196(but)N
692(this)X
842(has)X
984(to)X
1081(be)X
1192(a)X
1263(conscious)X
1614(act,)X
1763(and)X
1914(is)X
2002(often)X
555 3292(overlooked)N
936(by)X
1036(programmers.)X
755 3416(A)N
840(more)X
1032(serious)X
1286(problem)X
1580(with)X
1749(the)X
8 s
1874(DO)X
10 s
1993(state-)X
555 3512(ment)N
739(is)X
816(that)X
960(it)X
1028(encourages)X
1414(that)X
1558(a)X
1617(program)X
1912(be)X
2011(writ-)X
555 3608(ten)N
695(in)X
799(terms)X
1019(of)X
1127(an)X
1244(arithmetic)X
1610(progression)X
2025(with)X
555 3704(small)N
753(positive)X
1031(steps,)X
1236(even)X
1413(though)X
1659(that)X
1803(may)X
1965(not)X
2091(be)X
555 3800(the)N
685(best)X
846(way)X
1012(to)X
1106(write)X
1303(it.)X
1418(If)X
1503(code)X
1686(has)X
1824(to)X
1917(be)X
2024(con-)X
555 3896(torted)N
767(to)X
853(\256t)X
943(the)X
1065(requirements)X
1508(imposed)X
1803(by)X
1907(the)X
2029(For-)X
555 3992(tran)N
8 s
703(DO)X
10 s
795(,)X
837(it)X
903(is)X
978(that)X
1120(much)X
1320(harder)X
1548(to)X
1632(write)X
1819(and)X
1957(under-)X
555 4088(stand.)N
755 4212(To)N
872(overcome)X
1217(these)X
1410(dif\256culties,)X
1800(Ratfor)X
2033(pro-)X
555 4308(vides)N
753(a)X
3 f
818(while)X
1 f
1029(statement,)X
1385(which)X
1610(is)X
1692(simply)X
1938(a)X
2003(loop:)X
555 4404(``while)N
818(some)X
1018(condition)X
1350(is)X
1433(true,)X
1608(repeat)X
1835(this)X
1980(group)X
555 4500(of)N
658(statements''.)X
1126(It)X
1211(has)X
1353(no)X
1468(preconceptions)X
1989(about)X
555 4596(why)N
720(one)X
863(is)X
943(looping.)X
1254(For)X
1392(example,)X
1711(this)X
1852(routine)X
2105(to)X
555 4692(compute)N
857(sin\(x\))X
1069(by)X
1174(the)X
1297(Maclaurin)X
1652(series)X
1860(combines)X
555 4788(two)N
695(termination)X
1084(criteria.)X
2439 720(real)N
2580(function)X
2867(sin\(x,)X
3067(e\))X
2611 816(#)N
2671(returns)X
2914(sin\(x\))X
3121(to)X
3203(accuracy)X
3510(e,)X
3586(by)X
2611 912(#)N
2671(sin\(x\))X
2878(=)X
2943(x)X
9 f
3003(-)X
1 f
3067(x)X
9 f
(**)S
1 f
(3/3!)S
3336(+)X
3401(x)X
9 f
(**)S
1 f
(5/5!)S
9 f
3670(-)X
1 f
3734(...)X
2611 1104(sin)N
2724(=)X
2789(x)X
2611 1200(term)N
2778(=)X
2843(x)X
2611 1392(i)N
2653(=)X
2718(3)X
2611 1488(while)N
2809(\(abs\(term\)>e)X
3245(&)X
3327(i<100\))X
3561({)X
2784 1584(term)N
2951(=)X
9 f
3016(-)X
1 f
3060(term)X
9 f
3227(*)X
1 f
3287(x)X
9 f
(**)S
1 f
(2)S
3467(/)X
3509(\257oat\(i)X
9 f
3700(*)X
1 f
(\(i)S
9 f
3789(-)X
1 f
3833(1\)\))X
2784 1680(sin)N
2897(=)X
2962(sin)X
3075(+)X
3140(term)X
2784 1776(i)N
2826(=)X
2891(i)X
2933(+)X
2998(2)X
2611 1872(})N
2611 2064(return)N
2611 2160(end)N
2599 2332(Notice)N
2852(that)X
3011(if)X
3099(the)X
3236(routine)X
3502(is)X
3594(entered)X
3869(with)X
3 f
2399 2428(term)N
1 f
2586(already)X
2844(smaller)X
3101(than)X
3 f
3259(e)X
1 f
3295(,)X
3335(the)X
3453(loop)X
3615(will)X
3759(be)X
3855(done)X
2 f
2399 2524(zero)N
2575(times,)X
1 f
2802(that)X
2960(is,)X
3070(no)X
3187(attempt)X
3464(will)X
3625(be)X
3738(made)X
3949(to)X
2399 2620(compute)N
3 f
2709(x)X
9 f
(**)S
3 f
(3)S
1 f
2903(and)X
3052(thus)X
3218(a)X
3287(potential)X
3600(under\257ow)X
3958(is)X
2399 2716(avoided.)N
2728(Since)X
2941(the)X
3074(test)X
3219(is)X
3306(made)X
3514(at)X
3606(the)X
3738(top)X
3874(of)X
3975(a)X
3 f
2399 2812(while)N
1 f
2613(loop)X
2787(instead)X
3046(of)X
3145(the)X
3274(bottom,)X
3551(a)X
3618(special)X
3872(case)X
2399 2908(disappears)N
2766(\320)X
2873(the)X
2998(code)X
3177(works)X
3400(at)X
3485(one)X
3628(of)X
3722(its)X
3824(boun-)X
2399 3004(daries.)N
2660(\(The)X
2841(test)X
3 f
2981(i<100)X
1 f
3198(is)X
3280(the)X
3407(other)X
3600(boundary)X
3931(\320)X
2399 3100(making)N
2678(sure)X
2850(the)X
2986(routine)X
3251(stops)X
3453(after)X
3639(some)X
3846(max-)X
2399 3196(imum)N
2605(number)X
2870(of)X
2957(iterations.\))X
2599 3320(As)N
2710(an)X
2807(aside,)X
3013(a)X
3070(sharp)X
3265(character)X
3582(``#'')X
3751(in)X
3834(a)X
3891(line)X
2399 3416(marks)N
2617(the)X
2737(beginning)X
3079(of)X
3168(a)X
3226(comment;)X
3568(the)X
3688(rest)X
3825(of)X
3913(the)X
2399 3512(line)N
2558(is)X
2650(comment.)X
3027(Comments)X
3412(and)X
3567(code)X
3758(can)X
3908(co-)X
2399 3608(exist)N
2576(on)X
2682(the)X
2806(same)X
2997(line)X
3143(\320)X
3249(one)X
3390(can)X
3527(make)X
3726(marginal)X
2399 3704(remarks,)N
2704(which)X
2926(is)X
3004(not)X
3131(possible)X
3418(with)X
3585(Fortran's)X
3904(``C)X
2399 3800(in)N
2497(column)X
2773(1'')X
2903(convention.)X
3335(Blank)X
3562(lines)X
3748(are)X
3882(also)X
2399 3896(permitted)N
2727(anywhere)X
3060(\(they)X
3245(are)X
3364(not)X
3486(in)X
3568(Fortran\);)X
3873(they)X
2399 3992(should)N
2636(be)X
2736(used)X
2907(to)X
2993(emphasize)X
3356(the)X
3477(natural)X
3723(divisions)X
2399 4088(of)N
2486(a)X
2542(program.)X
2599 4212(The)N
2744(syntax)X
2973(of)X
3060(the)X
3 f
3178(while)X
1 f
3380(statement)X
3707(is)X
2599 4356(while)N
2797(\()X
2 f
2824(legal)X
3004(Fortran)X
3277(condition)X
1 f
3579(\))X
2 f
2829 4452(Ratfor)N
3053(statement)X
1 f
2399 4596(As)N
2520(with)X
2694(the)X
3 f
2823(if)X
1 f
2872(,)X
2 f
2923(legal)X
3114(Fortran)X
3398(condition)X
1 f
3731(is)X
3815(some-)X
2399 4692(thing)N
2597(that)X
2751(can)X
2897(go)X
3011(into)X
3169(a)X
3238(Fortran)X
3507(Logical)X
8 s
3785(IF)X
10 s
3842(,)X
3895(and)X
2 f
2399 4788(Ratfor)N
2626(statement)X
1 f
2956(is)X
3032(a)X
3091(single)X
3305(statement,)X
3655(which)X
3873(may)X
2399 4884(be)N
2495(multiple)X
2781(statements)X
3139(in)X
3221(braces.)X
2599 5008(The)N
3 f
2749(while)X
1 f
2955(encourages)X
3341(a)X
3401(style)X
3576(of)X
3667(coding)X
3909(not)X
2399 5104(normally)N
2715(practiced)X
3037(by)X
3144(Fortran)X
3406(programmers.)X
3900(For)X
2399 5200(example,)N
2739(suppose)X
3 f
3044(nextch)X
1 f
3318(is)X
3418(a)X
3501(function)X
3815(which)X
2399 5296(returns)N
2645(the)X
2766(next)X
2927(input)X
3114(character)X
3433(both)X
3597(as)X
3686(a)X
3744(function)X
2399 5392(value)N
2595(and)X
2733(in)X
2817(its)X
2914(argument.)X
3279(Then)X
3465(a)X
3522(loop)X
3685(to)X
3768(\256nd)X
3913(the)X
2399 5488(\256rst)N
2543(non-blank)X
2888(character)X
3204(is)X
3277(just)X
2599 5632(while)N
2797(\(nextch\(ich\))X
3210(==)X
3320(iblank\))X
2829 5728(;)N

7 p
%%Page: 7 7
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3754(PS2:8-7)X
555 672(A)N
635(semicolon)X
986(by)X
1088(itself)X
1270(is)X
1345(a)X
1403(null)X
1549(statement,)X
1897(which)X
2114(is)X
555 768(necessary)N
894(here)X
1059(to)X
1147(mark)X
1338(the)X
1462(end)X
1604(of)X
1697(the)X
3 f
1820(while)X
1 f
2002(;)X
2049(if)X
2123(it)X
555 864(were)N
755(not)X
900(present,)X
1194(the)X
3 f
1334(while)X
1 f
1558(would)X
1800(control)X
2069(the)X
555 960(next)N
736(statement.)X
1126(When)X
1361(the)X
1501(loop)X
1685(is)X
1780(broken,)X
3 f
2065(ich)X
1 f
555 1056(contains)N
851(the)X
978(\256rst)X
1131(non-blank.)X
1525(Of)X
1638(course)X
1876(the)X
2002(same)X
555 1152(code)N
727(can)X
859(be)X
955(written)X
1202(in)X
1284(Fortran)X
1540(as)X
595 1296(100)N
825(if)X
894(\(nextch\(ich\))X
1307(.eq.)X
1443(iblank\))X
1690(goto)X
1852(100)X
555 1440(but)N
686(many)X
893(Fortran)X
1158(programmers)X
1615(\(and)X
1787(a)X
1852(few)X
2002(com-)X
555 1536(pilers\))N
782(believe)X
1036(this)X
1173(line)X
1315(is)X
1390(illegal.)X
1652(The)X
1798(language)X
2109(at)X
555 1632(one's)N
753(disposal)X
1039(strongly)X
1324(in\257uences)X
1672(how)X
1833(one)X
1972(thinks)X
555 1728(about)N
753(a)X
809(problem.)X
3 f
555 2016(The)N
708(``for'')X
939(Statement)X
1 f
755 2140(The)N
3 f
916(for)X
1 f
1055(statement)X
1398(is)X
1487(another)X
1764(Ratfor)X
2005(loop,)X
555 2236(which)N
788(attempts)X
1095(to)X
1193(carry)X
1395(the)X
1529(separation)X
1895(of)X
1998(loop-)X
555 2332(body)N
744(from)X
929(reason-for-looping)X
1560(a)X
1625(step)X
1782(further)X
2029(than)X
555 2428(the)N
3 f
676(while.)X
1 f
901(A)X
3 f
982(for)X
1 f
1108(statement)X
1438(allows)X
1670(explicit)X
1932(initiali-)X
555 2524(zation)N
787(and)X
939(increment)X
1296(steps)X
1492(as)X
1595(part)X
1756(of)X
1859(the)X
1993(state-)X
555 2620(ment.)N
775(For)X
906(example,)X
1218(a)X
8 s
1274(DO)X
10 s
1386(loop)X
1548(is)X
1621(just)X
755 2764(for)N
869(\(i)X
938(=)X
1003(1;)X
1085(i)X
1127(<=)X
1237(n;)X
1319(i)X
1361(=)X
1426(i)X
1468(+)X
1533(1\))X
1620(...)X
555 2908(This)N
717(is)X
790(equivalent)X
1144(to)X
755 3052(i)N
797(=)X
862(1)X
755 3148(while)N
953(\(i)X
1022(<=)X
1132(n\))X
1219({)X
985 3244(...)N
985 3340(i)N
1027(=)X
1092(i)X
1134(+)X
1199(1)X
755 3436(})N
555 3580(The)N
717(initialization)X
1157(and)X
1309(increment)X
1666(of)X
3 f
1769(i)X
1 f
1827(have)X
2015(been)X
555 3676(moved)N
799(into)X
949(the)X
3 f
1073(for)X
1 f
1202(statement,)X
1555(making)X
1821(it)X
1891(easier)X
2105(to)X
555 3772(see)N
678(at)X
756(a)X
812(glance)X
1042(what)X
1218(controls)X
1496(the)X
1614(loop.)X
755 3896(The)N
3 f
902(for)X
1 f
1027(and)X
3 f
1165(while)X
1 f
1368(versions)X
1656(have)X
1829(the)X
1948(advan-)X
555 3992(tage)N
715(that)X
861(they)X
1025(will)X
1175(be)X
1277(done)X
1459(zero)X
1624(times)X
1823(if)X
3 f
1898(n)X
1 f
1968(is)X
2047(less)X
555 4088(than)N
713(1;)X
795(this)X
930(is)X
1003(not)X
1125(true)X
1270(of)X
1357(the)X
3 f
1475(do)X
1 f
1559(.)X
755 4212(The)N
904(loop)X
1070(of)X
1161(the)X
1283(sine)X
1435(routine)X
1685(in)X
1770(the)X
1891(previous)X
555 4308(section)N
802(can)X
934(be)X
1030(re-written)X
1367(with)X
1529(a)X
3 f
1585(for)X
1 f
1708(as)X
675 4452(for)N
789(\(i=3;)X
965(abs\(term\))X
1293(>)X
1358(e)X
1414(&)X
1496(i)X
1538(<)X
1603(100;)X
755 4548(i=i+2\))N
976({)X
905 4644(term)N
1072(=)X
9 f
1137(-)X
1 f
1181(term)X
9 f
1348(*)X
1 f
1408(x)X
9 f
(**)S
1 f
(2)S
1588(/)X
1630(\257oat\(i)X
9 f
1821(*)X
1 f
(\(i)S
9 f
1910(-)X
1 f
1954(1\)\))X
905 4740(sin)N
1018(=)X
1083(sin)X
1196(+)X
1261(term)X
675 4836(})N
755 5008(The)N
900(syntax)X
1129(of)X
1216(the)X
3 f
1334(for)X
1 f
1457(statement)X
1784(is)X
755 5152(for)N
869(\()X
2 f
916(init)X
1 f
1042(;)X
2 f
1084(condition)X
1 f
1406(;)X
2 f
1448(increment)X
1 f
1789(\))X
2 f
985 5248(Ratfor)N
1209(statement)X
555 5392(init)N
1 f
698(is)X
788(any)X
941(single)X
1169(Fortran)X
1442(statement,)X
1806(which)X
2038(gets)X
555 5488(done)N
745(once)X
931(before)X
1171(the)X
1303(loop)X
1478(begins.)X
2 f
1760(increment)X
1 f
2114(is)X
555 5584(any)N
700(single)X
920(Fortran)X
1185(statement,)X
1541(which)X
1766(gets)X
1924(done)X
2109(at)X
555 5680(the)N
679(end)X
821(of)X
914(each)X
1088(pass)X
1252(through)X
1527(the)X
1651(loop,)X
1838(before)X
2069(the)X
555 5776(test.)N
2 f
731(condition)X
1 f
1058(is)X
1136(again)X
1335(anything)X
1640(that)X
1785(is)X
1863(legal)X
2044(in)X
2131(a)X
2399 672(logical)N
8 s
2650(IF.)X
10 s
2756(Any)X
2927(of)X
2 f
3027(init,)X
3186(condition,)X
1 f
3541(and)X
2 f
3690(increment)X
1 f
2399 768(may)N
2578(be)X
2695(omitted,)X
3000(although)X
3321(the)X
3460(semicolons)X
2 f
3860(must)X
1 f
2399 864(always)N
2661(be)X
2776(present.)X
3087(A)X
3184(non-existent)X
2 f
3618(condition)X
1 f
3958(is)X
2399 960(treated)N
2649(as)X
2747(always)X
3001(true,)X
3177(so)X
3 f
3279(for\(;;\))X
1 f
3520(is)X
3603(an)X
3709(inde\256nite)X
2399 1056(repeat.)N
2661(\(But)X
2828(see)X
2956(the)X
3 f
3079(repeat-until)X
1 f
3509(in)X
3596(the)X
3719(next)X
3881(sec-)X
2399 1152(tion.\))N
2599 1276(The)N
3 f
2752(for)X
1 f
2883(statement)X
3217(is)X
3297(particularly)X
3694(useful)X
3917(for)X
2399 1372(backward)N
2748(loops,)X
2976(chaining)X
3287(along)X
3500(lists,)X
3683(loops)X
3891(that)X
2399 1468(might)N
2632(be)X
2755(done)X
2958(zero)X
3144(times,)X
3384(and)X
3547(similar)X
3816(things)X
2399 1564(which)N
2630(are)X
2764(hard)X
2941(to)X
3037(express)X
3312(with)X
3488(a)X
8 s
3558(DO)X
10 s
3684(statement,)X
2399 1660(and)N
2552(obscure)X
2838(to)X
2936(write)X
3137(out)X
3275(with)X
8 s
3453(IF)X
10 s
3510('s)X
3604(and)X
8 s
3756(GOTO)X
10 s
3933('s.)X
2399 1756(For)N
2535(example,)X
2851(here)X
3014(is)X
3091(a)X
3151(backwards)X
8 s
3519(DO)X
10 s
3635(loop)X
3801(to)X
3887(\256nd)X
2399 1852(the)N
2517(last)X
2648(non-blank)X
2993(character)X
3309(on)X
3409(a)X
3465(card:)X
2599 1996(for)N
2713(\(i)X
2782(=)X
2847(80;)X
2969(i)X
3011(>)X
3076(0;)X
3158(i)X
3200(=)X
3265(i)X
9 f
3307(-)X
1 f
3371(1\))X
2829 2092(if)N
2898(\(card\(i\))X
3160(!=)X
3252(blank\))X
3059 2188(break)N
2399 2332(\(``!='')N
2631(is)X
2709(the)X
2832(same)X
3022(as)X
8 s
3114(``.NE.'')X
10 s
3315(\).)X
3387(The)X
3537(code)X
3714(scans)X
3913(the)X
2399 2428(columns)N
2698(from)X
2882(80)X
2990(through)X
3266(to)X
3355(1.)X
3462(If)X
3543(a)X
3606(non-blank)X
3958(is)X
2399 2524(found,)N
2643(the)X
2778(loop)X
2957(is)X
3047(immediately)X
3484(broken.)X
3784(\()X
3 f
3811(break)X
1 f
2399 2620(and)N
3 f
2556(next)X
1 f
2743(work)X
2948(in)X
3 f
3050(for)X
1 f
3153('s)X
3251(and)X
3 f
3407(while)X
1 f
3589('s)X
3687(just)X
3842(as)X
3949(in)X
3 f
2399 2716(do)N
1 f
2483('s\).)X
2608(If)X
3 f
2682(i)X
1 f
2724(reaches)X
2986(zero,)X
3165(the)X
3283(card)X
3442(is)X
3515(all)X
3615(blank.)X
2599 2840(This)N
2779(code)X
2969(is)X
3060(rather)X
3286(nasty)X
3493(to)X
3593(write)X
3796(with)X
3975(a)X
2399 2936(regular)N
2662(Fortran)X
8 s
2933(DO)X
10 s
3025(,)X
3080(since)X
3279(the)X
3411(loop)X
3587(must)X
3776(go)X
3890(for-)X
2399 3032(ward,)N
2603(and)X
2742(we)X
2859(must)X
3037(explicitly)X
3361(set)X
3472(up)X
3574(proper)X
3806(condi-)X
2399 3128(tions)N
2589(when)X
2797(we)X
2925(fall)X
3066(out)X
3202(of)X
3303(the)X
3435(loop.)X
3651(\(Forgetting)X
2399 3224(this)N
2534(is)X
2607(a)X
2663(common)X
2963(error.\))X
3187(Thus:)X
2611 3368(DO)N
2747(10)X
2847(J)X
2898(=)X
2963(1,)X
3043(80)X
2784 3464(I)N
2831(=)X
2896(81)X
9 f
2996(-)X
1 f
3060(J)X
2784 3560(IF)N
2875(\(CARD\(I\))X
3225(.NE.)X
3392(BLANK\))X
3715(GO)X
3851(TO)X
3978(11)X
2439 3656(10)N
2611(CONTINUE)X
2611 3752(I)N
2658(=)X
2723(0)X
2439 3848(11)N
2611(...)X
2399 3992(The)N
2547(version)X
2805(that)X
2947(uses)X
3107(the)X
3 f
3227(for)X
1 f
3352(handles)X
3619(the)X
3739(termina-)X
2399 4088(tion)N
2545(condition)X
2868(properly)X
3161(for)X
3276(free;)X
3 f
3445(i)X
2 f
3488(is)X
1 f
3562(zero)X
3722(when)X
3917(we)X
2399 4184(fall)N
2526(out)X
2648(of)X
2735(the)X
3 f
2853(for)X
1 f
2976(loop.)X
2599 4308(The)N
2745(increment)X
3087(in)X
3170(a)X
3 f
3227(for)X
1 f
3351(need)X
3523(not)X
3645(be)X
3741(an)X
3837(arith-)X
2399 4404(metic)N
2611(progression;)X
3041(the)X
3173(following)X
3518(program)X
3824(walks)X
2399 4500(along)N
2601(a)X
2661(list)X
2782(\(stored)X
3029(in)X
3115(an)X
3214(integer)X
3460(array)X
3 f
3649(ptr)X
1 f
3756(\))X
3806(until)X
3975(a)X
2399 4596(zero)N
2565(pointer)X
2819(is)X
2899(found,)X
3132(adding)X
3376(up)X
3482(elements)X
3793(from)X
3975(a)X
2399 4692(parallel)N
2660(array)X
2846(of)X
2933(values:)X
2599 4836(sum)N
2752(=)X
2817(0.0)X
2599 4932(for)N
2713(\(i)X
2782(=)X
2847(\256rst;)X
3013(i)X
3055(>)X
3120(0;)X
3202(i)X
3244(=)X
3309(ptr\(i\)\))X
2829 5028(sum)N
2982(=)X
3047(sum)X
3200(+)X
3265(value\(i\))X
2399 5172(Notice)N
2641(that)X
2789(the)X
2915(code)X
3095(works)X
3319(correctly)X
3633(if)X
3709(the)X
3834(list)X
3958(is)X
2399 5268(empty.)N
2660(Again,)X
2897(placing)X
3154(the)X
3273(test)X
3405(at)X
3484(the)X
3603(top)X
3726(of)X
3813(a)X
3869(loop)X
2399 5364(instead)N
2650(of)X
2740(the)X
2861(bottom)X
3110(eliminates)X
3462(a)X
3521(potential)X
3824(boun-)X
2399 5460(dary)N
2562(error.)X

8 p
%%Page: 8 8
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-8)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
3 f
555 672(The)N
708(``repeat-until'')X
1241(statement)X
1 f
755 796(In)N
870(spite)X
1068(of)X
1182(the)X
1327(dire)X
1499(warnings,)X
1860(there)X
2068(are)X
555 892(times)N
760(when)X
966(one)X
1114(really)X
1329(needs)X
1544(a)X
1612(loop)X
1785(that)X
1936(tests)X
2109(at)X
555 988(the)N
675(bottom)X
923(after)X
1093(one)X
1231(pass)X
1391(through.)X
1702(This)X
1865(service)X
2114(is)X
555 1084(provided)N
860(by)X
960(the)X
3 f
1078(repeat-until)X
1 f
1483(:)X
755 1228(repeat)N
2 f
985 1324(Ratfor)N
1209(statement)X
1 f
755 1420(until)N
921(\()X
2 f
948(legal)X
1128(Fortran)X
1401(condition)X
1 f
1703(\))X
555 1564(The)N
2 f
710(Ratfor)X
944(statement)X
1 f
1280(part)X
1434(is)X
1516(done)X
1701(once,)X
1902(then)X
2069(the)X
555 1660(condition)N
893(is)X
982(evaluated.)X
1366(If)X
1456(it)X
1536(is)X
1624(true,)X
1804(the)X
1937(loop)X
2114(is)X
555 1756(exited;)N
793(if)X
862(it)X
926(is)X
999(false,)X
1191(another)X
1452(pass)X
1610(is)X
1683(made.)X
755 1880(The)N
3 f
906(until)X
1 f
1091(part)X
1242(is)X
1320(optional,)X
1627(so)X
1723(a)X
1784(bare)X
3 f
1948(repeat)X
1 f
555 1976(is)N
631(the)X
752(cleanest)X
1034(way)X
1191(to)X
1276(specify)X
1531(an)X
1630(in\256nite)X
1878(loop.)X
2082(Of)X
555 2072(course)N
793(such)X
968(a)X
1032(loop)X
1201(must)X
1383(ultimately)X
1734(be)X
1837(broken)X
2087(by)X
555 2168(some)N
752(transfer)X
1025(of)X
1119(control)X
1373(such)X
1547(as)X
3 f
1641(stop)X
1 f
1783(,)X
3 f
1830(return)X
1 f
2053(,)X
2100(or)X
3 f
555 2264(break)N
1 f
(,)S
802(or)X
896(an)X
998(implicit)X
1272(stop)X
1431(such)X
1604(as)X
1697(running)X
1972(out)X
2100(of)X
555 2360(input)N
739(with)X
901(a)X
8 s
957(READ)X
10 s
1151(statement.)X
755 2484(As)N
910(a)X
1012(matter)X
1282(of)X
1414(observed)X
1769(fact[8],)X
2069(the)X
3 f
555 2580(repeat-until)N
1 f
985(statement)X
1317(is)X
2 f
1394(much)X
1 f
1592(less)X
1736(used)X
1907(than)X
2069(the)X
555 2676(other)N
765(looping)X
1054(constructions;)X
1548(in)X
1654(particular,)X
2026(it)X
2114(is)X
555 2772(typically)N
883(outnumbered)X
1354(ten)X
1500(to)X
1610(one)X
1774(by)X
3 f
1901(for)X
1 f
2051(and)X
3 f
555 2868(while)N
1 f
737(.)X
789(Be)X
910(cautious)X
1209(about)X
1419(using)X
1623(it,)X
1718(for)X
1843(loops)X
2047(that)X
555 2964(test)N
705(only)X
885(at)X
981(the)X
1117(bottom)X
1381(often)X
1584(don't)X
1791(handle)X
2043(null)X
555 3060(cases)N
745(well.)X
3 f
555 3252(More)N
763(on)X
867(break)X
1087(and)X
1235(next)X
755 3376(break)N
1 f
995(exits)X
1186(immediately)X
1626(from)X
3 f
1822(do)X
1 f
1906(,)X
3 f
1965(while)X
1 f
2147(,)X
3 f
555 3472(for)N
1 f
658(,)X
700(and)X
3 f
838(repeat-until)X
1 f
1243(.)X
3 f
1284(next)X
1 f
1452(goes)X
1620(to)X
1703(the)X
1822(test)X
1954(part)X
2100(of)X
3 f
555 3568(do)N
1 f
639(,)X
3 f
686(while)X
1 f
895(and)X
3 f
1038(repeat-until)X
1 f
1443(,)X
1490(and)X
1633(to)X
1722(the)X
1846(increment)X
555 3664(step)N
704(of)X
791(a)X
3 f
847(for)X
1 f
950(.)X
3 f
555 3856(``return'')N
906(Statement)X
1 f
755 3980(The)N
901(standard)X
1193(Fortran)X
1449(mechanism)X
1834(for)X
1948(return-)X
555 4076(ing)N
684(a)X
747(value)X
948(from)X
1131(a)X
1194(function)X
1488(uses)X
1652(the)X
1776(name)X
1976(of)X
2069(the)X
555 4172(function)N
852(as)X
949(a)X
1015(variable)X
1304(which)X
1530(can)X
1672(be)X
1778(assigned)X
2083(to;)X
555 4268(the)N
691(last)X
840(value)X
1051(stored)X
1284(in)X
1383(it)X
1464(is)X
1554(the)X
1689(function)X
1993(value)X
555 4364(upon)N
737(return.)X
991(For)X
1124(example,)X
1438(here)X
1599(is)X
1674(a)X
1732(routine)X
3 f
1981(equal)X
1 f
555 4460(which)N
786(returns)X
1044(1)X
1119(if)X
1203(two)X
1357(arrays)X
1588(are)X
1721(identical,)X
2051(and)X
555 4556(zero)N
718(if)X
791(they)X
952(differ.)X
1194(The)X
1342(array)X
1531(ends)X
1701(are)X
1823(marked)X
2087(by)X
555 4652(the)N
673(special)X
916(value)X
9 f
1110(-)X
1 f
1154(1.)X
2439 720(#)N
2499(equal)X
10 f
2693(h)X
1 f
2753(compare)X
3050(str1)X
3190(to)X
3272(str2;)X
2439 816(#)N
2611(return)X
2823(1)X
2883(if)X
2952(equal,)X
3166(0)X
3226(if)X
3295(not)X
2611 912(integer)N
2854(function)X
3141(equal\(str1,)X
3502(str2\))X
2611 1008(integer)N
2854(str1\(100\),)X
3188(str2\(100\))X
2611 1104(integer)N
2854(i)X
2611 1296(for)N
2725(\(i)X
2794(=)X
2859(1;)X
2941(str1\(i\))X
3157(==)X
3267(str2\(i\);)X
3505(i)X
3547(=)X
3612(i)X
3654(+)X
3719(1\))X
2784 1392(if)N
2853(\(str1\(i\))X
3096(==)X
9 f
3206(-)X
1 f
3250(1\))X
3337({)X
2957 1488(equal)N
3151(=)X
3216(1)X
2957 1584(return)N
2784 1680(})N
2611 1776(equal)N
2805(=)X
2870(0)X
2611 1872(return)N
2611 1968(end)N
2599 2140(In)N
2695(many)X
2902(languages)X
3252(\(e.g.,)X
3443(PL/I\))X
3640(one)X
3784(instead)X
2399 2236(says)N
2599 2380(return)N
2811(\()X
2 f
2838(expression)X
1 f
3181(\))X
2399 2524(to)N
2495(return)X
2721(a)X
2791(value)X
2999(from)X
3189(a)X
3259(function.)X
3599(Since)X
3810(this)X
3958(is)X
2399 2620(often)N
2585(clearer,)X
2846(Ratfor)X
3072(provides)X
3369(such)X
3537(a)X
3 f
3594(return)X
1 f
3837(state-)X
2399 2716(ment)N
2597(\320)X
2715(in)X
2815(a)X
2889(function)X
3 f
3194(F)X
1 f
3243(,)X
3 f
3301(return)X
1 f
3524(\(expression\))X
3958(is)X
2399 2812(equivalent)N
2753(to)X
2599 2956({)N
2657(F)X
2721(=)X
2786(expression;)X
3171(return)X
3383(})X
2399 3100(For)N
2530(example,)X
2842(here)X
3001(is)X
3 f
3074(equal)X
1 f
3280(again:)X
2439 3244(#)N
2499(equal)X
10 f
2693(h)X
1 f
2753(compare)X
3050(str1)X
3190(to)X
3272(str2;)X
2439 3340(#)N
2611(return)X
2823(1)X
2883(if)X
2952(equal,)X
3166(0)X
3226(if)X
3295(not)X
2611 3436(integer)N
2854(function)X
3141(equal\(str1,)X
3502(str2\))X
2611 3532(integer)N
2854(str1\(100\),)X
3188(str2\(100\))X
2611 3628(integer)N
2854(i)X
2611 3820(for)N
2725(\(i)X
2794(=)X
2859(1;)X
2941(str1\(i\))X
3157(==)X
3267(str2\(i\);)X
3505(i)X
3547(=)X
3612(i)X
3654(+)X
3719(1\))X
2784 3916(if)N
2853(\(str1\(i\))X
3096(==)X
9 f
3206(-)X
1 f
3250(1\))X
2957 4012(return\(1\))N
2611 4108(return\(0\))N
2611 4204(end)N
2399 4348(If)N
2509(there)X
2725(is)X
2833(no)X
2968(parenthesized)X
3465(expression)X
3863(after)X
3 f
2399 4444(return)N
1 f
2622(,)X
2666(a)X
2726(normal)X
8 s
2976(RETURN)X
10 s
3255(is)X
3331(made.)X
3568(\(Another)X
3881(ver-)X
2399 4540(sion)N
2552(of)X
3 f
2639(equal)X
1 f
2845(is)X
2918(presented)X
3246(shortly.\))X
3 f
2399 4828(Cosmetics)N
1 f
2599 4952(As)N
2713(we)X
2831(said)X
2984(above,)X
3220(the)X
3342(visual)X
3557 0.3750(appearance)AX
3944(of)X
2399 5048(a)N
2459(language)X
2773(has)X
2904(a)X
2964(substantial)X
3330(effect)X
3537(on)X
3640(how)X
3801(easy)X
3967(it)X
2399 5144(is)N
2473(to)X
2556(read)X
2716(and)X
2853(understand)X
3226(programs.)X
3590(Accordingly,)X
2399 5240(Ratfor)N
2641(provides)X
2954(a)X
3027(number)X
3309(of)X
3413(cosmetic)X
3735(facilities)X
2399 5336(which)N
2619(may)X
2780(be)X
2879(used)X
3049(to)X
3134(make)X
3331(programs)X
3657(more)X
3845(read-)X
2399 5432(able.)N

9 p
%%Page: 9 9
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3754(PS2:8-9)X
3 f
555 672 0.4063(Free-form)AN
929(Input)X
1 f
755 796(Statements)N
1145(can)X
1296(be)X
1411(placed)X
1660(anywhere)X
2012(on)X
2131(a)X
555 892(line;)N
721(long)X
887(statements)X
1249(are)X
1372(continued)X
1711(automatically,)X
555 988(as)N
647(are)X
771(long)X
938(conditions)X
1296(in)X
3 f
1382(if)X
1 f
1431(,)X
3 f
1475(while)X
1 f
1657(,)X
3 f
1701(for)X
1 f
1804(,)X
1848(and)X
3 f
1988(until)X
1 f
2147(.)X
555 1084(Blank)N
769(lines)X
943(are)X
1065(ignored.)X
1372(Multiple)X
1669(statements)X
2029(may)X
555 1180(appear)N
794(on)X
898(one)X
1038(line,)X
1202(if)X
1275(they)X
1437(are)X
1559(separated)X
1886(by)X
1989(semi-)X
555 1276(colons.)N
836(No)X
965(semicolon)X
1325(is)X
1409(needed)X
1668(at)X
1757(the)X
1886(end)X
2033(of)X
2131(a)X
555 1372(line,)N
730(if)X
814(Ratfor)X
1054(can)X
1200(make)X
1408(some)X
1611(reasonable)X
1989(guess)X
555 1468(about)N
774(whether)X
1074(the)X
1213(statement)X
1561(ends)X
1748(there.)X
1989(Lines)X
555 1564(ending)N
793(with)X
955(any)X
1091(of)X
1178(the)X
1296(characters)X
755 1708(=)N
880(+)X
9 f
1005(-)X
1129(*)X
1 f
1249(,)X
10 f
1349(J)X
1 f
1462(&)X
1604(\()X
10 f
1711(h)X
1 f
555 1852(are)N
695(assumed)X
1012(to)X
1115(be)X
1232(continued)X
1589(on)X
1710(the)X
1849(next)X
2027(line.)X
555 1948(Underscores)N
990(are)X
1122(discarded)X
1463(wherever)X
1796(they)X
1966(occur;)X
555 2044(all)N
655(others)X
871(remain)X
1114(as)X
1201(part)X
1346(of)X
1433(the)X
1551(statement.)X
755 2168(Any)N
946(statement)X
1305(that)X
1477(begins)X
1738(with)X
1932(an)X
2060(all-)X
555 2264(numeric)N
855(\256eld)X
1034(is)X
1124(assumed)X
1437(to)X
1535(be)X
1647(a)X
1719(Fortran)X
1991(label,)X
555 2360(and)N
691(placed)X
921(in)X
1003(columns)X
1294(1-5)X
1421(upon)X
1601(output.)X
1865(Thus)X
755 2504(write\(6,)N
1027(100\);)X
1216(100)X
1356(format\("hello"\))X
555 2648(is)N
628(converted)X
965(into)X
985 2792(write\(6,)N
1257(100\))X
755 2888(100)N
985(format\(5hhello\))X
3 f
555 3128(Translation)N
974(Services)X
1 f
755 3252(Text)N
927(enclosed)X
1233(in)X
1320(matching)X
1643(single)X
1858(or)X
1949(double)X
555 3348(quotes)N
786(is)X
861(converted)X
1200(to)X
3 f
1284(nH...)X
1 f
1472(but)X
1595(is)X
1669(otherwise)X
2002(unal-)X
555 3444(tered)N
752(\(except)X
1025(for)X
1155(formatting)X
1529(\320)X
1645(it)X
1724(may)X
1897(get)X
2030(split)X
555 3540(across)N
799(card)X
981(boundaries)X
1375(during)X
1626(the)X
1766(reformatting)X
555 3636(process\).)N
888(Within)X
1134(quoted)X
1376(strings,)X
1633(the)X
1755(backslash)X
2091(`\\')X
555 3732(serves)N
785(as)X
881(an)X
986(escape)X
1230(character:)X
1577(the)X
1704(next)X
1871(character)X
555 3828(is)N
652(taken)X
870(literally.)X
1203(This)X
1389(provides)X
1708(a)X
1787(way)X
1964(to)X
2069(get)X
555 3924(quotes)N
802(\(and)X
983(of)X
1088(course)X
1335(the)X
1470(backslash)X
1819(itself\))X
2043(into)X
555 4020(quoted)N
793(strings:)X
755 4164("\\\\\\)N
9 f
854(\242)X
1 f
874(")X
555 4308(is)N
645(a)X
717(string)X
935(containing)X
1309(a)X
1381(backslash)X
1729(and)X
1881(an)X
1993(apos-)X
555 4404(trophe.)N
836(\(This)X
1041(is)X
2 f
1130(not)X
1 f
1268(the)X
1402(standard)X
1709(convention)X
2100(of)X
555 4500(doubled)N
845(quotes,)X
1106(but)X
1240(it)X
1316(is)X
1401(easier)X
1621(to)X
1715(use)X
1854(and)X
2002(more)X
555 4596(general.\))N
755 4720(Any)N
917(line)X
1061(that)X
1205(begins)X
1438(with)X
1604(the)X
1726(character)X
2046(`%')X
555 4816(is)N
629(left)X
757(absolutely)X
1106(unaltered)X
1425(except)X
1655(for)X
1769(stripping)X
2073(off)X
555 4912(the)N
685(`%')X
838(and)X
986(moving)X
1261(the)X
1390(line)X
1541(one)X
1688(position)X
1976(to)X
2069(the)X
555 5008(left.)N
723(This)X
886(is)X
960(useful)X
1177(for)X
1292(inserting)X
1593(control)X
1841(cards,)X
2051(and)X
555 5104(other)N
766(things)X
1007(that)X
1173(should)X
1432(not)X
1579(be)X
1700(transmogri\256ed)X
555 5200(\(like)N
727(an)X
828(existing)X
1106(Fortran)X
1367(program\).)X
1731(Use)X
1880(`%')X
2025(only)X
555 5296(for)N
698(ordinary)X
1019(statements,)X
1426(not)X
1577(for)X
1719(the)X
1865(condition)X
555 5392(parts)N
732(of)X
3 f
819(if)X
1 f
868(,)X
3 f
908(while)X
1 f
1090(,)X
1130(etc.,)X
1284(or)X
1371(the)X
1489(output)X
1713(may)X
1871(come)X
2065(out)X
555 5488(in)N
637(an)X
733(unexpected)X
1119(place.)X
755 5612(The)N
933(following)X
1297(character)X
1646(translations)X
2068(are)X
555 5708(made,)N
771(except)X
1003(within)X
1229(single)X
1442(or)X
1530(double)X
1769(quotes)X
1999(or)X
2087(on)X
555 5804(a)N
611(line)X
751(beginning)X
1091(with)X
1253(a)X
1309(`%'.)X
2599 720(==)N
2887(.eq.)X
3463(!=)X
3751(.ne.)X
2599 816(>)N
2887(.gt.)X
3463(>=)X
3751(.ge.)X
2599 912(<)N
2887(.lt.)X
3463(<=)X
3751(.le.)X
2599 1008(&)N
2887(.and.)X
10 f
3463(J)X
1 f
3751(.or.)X
2599 1104(!)N
2887(.not.)X
9 f
3463(\330)X
1 f
3751(.not.)X
2399 1248(In)N
2508(addition,)X
2832(the)X
2972(following)X
3325(translations)X
3736(are)X
3877(pro-)X
2399 1344(vided)N
2610(for)X
2737(input)X
2934(devices)X
3208(with)X
3383(restricted)X
3715(character)X
2399 1440(sets.)N
2599 1584([)N
2887({)X
3463(])X
3751(})X
2599 1680($\()N
2887({)X
3463($\))X
3751(})X
3 f
2399 1920(``de\256ne'')N
2731(Statement)X
1 f
2599 2044(Any)N
2767(string)X
2979(of)X
3076(alphanumeric)X
3543(characters)X
3899(can)X
2399 2140(be)N
2510(de\256ned)X
2780(as)X
2881(a)X
2951(name;)X
3181(thereafter,)X
3544(whenever)X
3891(that)X
2399 2236(name)N
2623(occurs)X
2883(in)X
2995(the)X
3143(input)X
3357(\(delimited)X
3735(by)X
3864(non-)X
2399 2332(alphanumerics\))N
2930(it)X
3010(is)X
3099(replaced)X
3408(by)X
3524(the)X
3658(rest)X
3810(of)X
3913(the)X
2399 2428(de\256nition)N
2755(line.)X
2965(\(Comments)X
3388(and)X
3553(trailing)X
3833(white)X
2399 2524(spaces)N
2638(are)X
2766(stripped)X
3053(off\).)X
3243(A)X
3329(de\256ned)X
3593(name)X
3795(can)X
3935(be)X
2399 2620(arbitrarily)N
2740(long,)X
2922(and)X
3058(must)X
3233(begin)X
3431(with)X
3593(a)X
3649(letter.)X
3 f
2599 2744(de\256ne)N
1 f
2833(is)X
2916(typically)X
3226(used)X
3403(to)X
3495(create)X
3718(symbolic)X
2399 2840(parameters:)N
2599 2984(de\256ne)N
2824(ROWS)X
3285(100)X
2599 3080(de\256ne)N
2824(COLS)X
3054(50)X
2599 3216(dimension)N
2952(a\(ROWS\),)X
3313(b\(ROWS,)X
3651(COLS\))X
2829 3352(if)N
2898(\(i)X
2967(>)X
3032(ROWS)X
3303(|)X
3359(j)X
3401(>)X
3466(COLS\))X
3717(...)X
2399 3496(Alternately,)N
2800(de\256nitions)X
3157(may)X
3315(be)X
3411(written)X
3658(as)X
2599 3640(de\256ne\(ROWS,)N
3093(100\))X
2399 3784(In)N
2497(this)X
2643(case,)X
2833(the)X
2962(de\256ning)X
3255(text)X
3406(is)X
3490(everything)X
3863(after)X
2399 3880(the)N
2525(comma)X
2789(up)X
2897(to)X
2986(the)X
3111(balancing)X
3450(right)X
3628(parenthesis;)X
2399 3976(this)N
2534(allows)X
2763(multi-line)X
3098(de\256nitions.)X
2599 4100(It)N
2679(is)X
2763(generally)X
3093(a)X
3160(wise)X
3337(practice)X
3622(to)X
3714(use)X
3851(sym-)X
2399 4196(bolic)N
2582(parameters)X
2958(for)X
3075(most)X
3253(constants,)X
3593(to)X
3677(help)X
3837(make)X
2399 4292(clear)N
2596(the)X
2734(function)X
3041(of)X
3148(what)X
3344(would)X
3584(otherwise)X
3935(be)X
2399 4388(mysterious)N
2779(numbers.)X
3124(As)X
3241(an)X
3345(example,)X
3665(here)X
3832(is)X
3913(the)X
2399 4484(routine)N
3 f
2651(equal)X
1 f
2862(again,)X
3080(this)X
3219(time)X
3385(with)X
3551(symbolic)X
3868(con-)X
2399 4580(stants.)N

10 p
%%Page: 10 10
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-10)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
675 720(de\256ne)N
1015(YES)X
1361(1)X
675 816(de\256ne)N
1015(NO)X
1361(0)X
675 912(de\256ne)N
1015(EOS)X
9 f
1361(-)X
1 f
1405(1)X
675 1008(de\256ne)N
1015(ARB)X
1361(100)X
675 1200(#)N
735(equal)X
10 f
929(h)X
1 f
989(compare)X
1286(str1)X
1426(to)X
1508(str2;)X
675 1296(#)N
847(return)X
1059(YES)X
1230(if)X
1299(equal,)X
1513(NO)X
1649(if)X
1718(not)X
847 1392(integer)N
1090(function)X
1377(equal\(str1,)X
1738(str2\))X
847 1488(integer)N
1090(str1\(ARB\),)X
1468(str2\(ARB\))X
847 1584(integer)N
1090(i)X
847 1776(for)N
961(\(i)X
1030(=)X
1095(1;)X
1177(str1\(i\))X
1393(==)X
1503(str2\(i\);)X
847 1872(i)N
889(=)X
954(i)X
996(+)X
1061(1\))X
1020 1968(if)N
1089(\(str1\(i\))X
1332(==)X
1442(EOS\))X
1193 2064(return\(YES\))N
847 2160(return\(NO\))N
847 2256(end)N
3 f
555 2496(``include'')N
931(Statement)X
1 f
755 2620(The)N
900(statement)X
985 2764(include)N
1241(\256le)X
555 2908(inserts)N
791(the)X
916(\256le)X
1045(found)X
1259(on)X
1365(input)X
1555(stream)X
2 f
1795(\256le)X
1 f
1919(into)X
2069(the)X
555 3004(Ratfor)N
799(input)X
1002(in)X
1103(place)X
1312(of)X
1418(the)X
3 f
1554(include)X
1 f
1840(statement.)X
555 3100(The)N
701(standard)X
994(usage)X
1198(is)X
1271(to)X
1353(place)X
8 s
1543(COMMON)X
10 s
1858(blocks)X
2087(on)X
555 3196(a)N
626(\256le,)X
783(and)X
3 f
934(include)X
1 f
1217(that)X
1371(\256le)X
1507(whenever)X
1854(a)X
1924(copy)X
2114(is)X
555 3292(needed:)N
755 3436(subroutine)N
1113(x)X
985 3532(include)N
1241(commonblocks)X
985 3628(...)N
985 3724(end)N
755 3916(suroutine)N
1073(y)X
985 4012(include)N
1241(commonblocks)X
985 4108(...)N
985 4204(end)N
555 4348(This)N
749(ensures)X
1042(that)X
1214(all)X
1346(copies)X
1603(of)X
1722(the)X
8 s
1872(COMMON)X
10 s
555 4444(blocks)N
784(are)X
903(identical)X
3 f
555 4636(Pitfalls,)N
835(Botches,)X
1142(Blemishes)X
1504(and)X
1652(other)X
1855(Failings)X
1 f
755 4760(Ratfor)N
980(catches)X
1237(certain)X
1476(syntax)X
1705(errors,)X
1933(such)X
2100(as)X
555 4856(missing)N
843(braces,)X
3 f
1109(else)X
1 f
1274(clauses)X
1545(without)X
1828(an)X
3 f
1943(if)X
1 f
1992(,)X
2051(and)X
555 4952(most)N
766(errors)X
1010(involving)X
1372(missing)X
1675(parentheses)X
2105(in)X
555 5048(statements.)N
964(Beyond)X
1244(that,)X
1415(since)X
1611(Ratfor)X
1847(knows)X
2087(no)X
555 5144(Fortran,)N
838(any)X
981(errors)X
1195(you)X
1341(make)X
1541(will)X
1691(be)X
1793(reported)X
2087(by)X
555 5240(the)N
691(Fortran)X
965(compiler,)X
1307(so)X
1415(you)X
1572(will)X
1733(from)X
1926(time)X
2105(to)X
555 5336(time)N
730(have)X
915(to)X
1010(relate)X
1222(a)X
1291(Fortran)X
1560(diagnostic)X
1921(back)X
2105(to)X
555 5432(the)N
673(Ratfor)X
898(source.)X
755 5556(Keywords)N
1126(are)X
1266(reserved)X
1580(\320)X
1700(using)X
3 f
1913(if)X
1 f
1962(,)X
3 f
2022(else)X
1 f
2147(,)X
555 5652(etc.,)N
747(as)X
872(variable)X
1189(names)X
1452(will)X
1633(typically)X
1970(wreak)X
555 5748(havoc.)N
823(Don't)X
1046(leave)X
1251(spaces)X
1496(in)X
1593(keywords.)X
1980(Don't)X
555 5844(use)N
682(the)X
800(Arithmetic)X
8 s
1167(IF)X
10 s
1224(.)X
2599 672(The)N
2762(Fortran)X
3 f
3036(nH)X
1 f
3180(convention)X
3574(is)X
3665(not)X
3805(recog-)X
2399 768(nized)N
2593(anywhere)X
2926(by)X
3026(Ratfor;)X
3273(use)X
3400(quotes)X
3629(instead.)X
3 f
2399 960(3.)N
2499(IMPLEMENTATION)X
1 f
2599 1084(Ratfor)N
2827(was)X
2975(originally)X
3309(written)X
3558(in)X
3642(C[4])X
3811(on)X
3913(the)X
8 s
2399 1180(UNIX)N
10 s
2624(operating)X
2992(system[5].)X
3413(The)X
3603(language)X
3958(is)X
2399 1276(speci\256ed)N
2707(by)X
2810(a)X
2869(context)X
3128(free)X
3276(grammar)X
3588(and)X
3726(the)X
3846(com-)X
2399 1372(piler)N
2613(constructed)X
3050(using)X
3290(the)X
8 s
3455(YACC)X
10 s
3699(compiler-)X
2399 1468(compiler[6].)N
2599 1592(The)N
2748(Ratfor)X
2977(grammar)X
3291(is)X
3368(simple)X
3605(and)X
3744(straight-)X
2399 1688(forward,)N
2694(being)X
2892(essentially)X
2599 1832(prog)N
2829(:)X
2871(stat)X
10 f
2829 1928(J)N
1 f
2882(prog)X
3089(stat)X
2599 2024(stat)N
2829(:)X
3 f
2871(if)X
1 f
2940(\(...\))X
3074(stat)X
10 f
2829 2120(J)N
3 f
2882(if)X
1 f
2951(\(...\))X
3085(stat)X
3 f
3216(else)X
1 f
3361(stat)X
10 f
2829 2216(J)N
3 f
2882(while)X
1 f
3084(\(...\))X
3218(stat)X
10 f
2829 2312(J)N
3 f
2882(for)X
1 f
3005(\(...;)X
3134(...;)X
3236(...\))X
3343(stat)X
10 f
2829 2408(J)N
3 f
2882(do)X
1 f
2986(...)X
3066(stat)X
10 f
2829 2504(J)N
3 f
2882(repeat)X
1 f
3121(stat)X
10 f
2829 2600(J)N
3 f
2882(repeat)X
1 f
3121(stat)X
3 f
3252(until)X
1 f
3431(\(...\))X
10 f
2829 2696(J)N
3 f
2882(switch)X
1 f
3120(\(...\))X
3254({)X
3 f
3312(case)X
1 f
3475(...:)X
3577(prog)X
3744(...)X
3 f
3290 2792(default)N
1 f
(:)S
3572(prog)X
3739(})X
10 f
2829 2888(J)N
3 f
2882(return)X
1 f
10 f
2829 2984(J)N
3 f
2882(break)X
1 f
10 f
2829 3080(J)N
3 f
2882(next)X
1 f
10 f
2829 3176(J)N
1 f
2882(digits)X
3119(stat)X
10 f
2829 3272(J)N
1 f
2882({)X
2940(prog)X
3107(})X
10 f
2829 3368(J)N
1 f
2882(anything)X
3182(unrecognizable)X
2399 3512(The)N
2545(observation)X
2940(that)X
3081(Ratfor)X
3307(knows)X
3537(no)X
3638(Fortran)X
3895(fol-)X
2399 3608(lows)N
2571(directly)X
2837(from)X
3014(the)X
3132(rule)X
3277(that)X
3417(says)X
3575(a)X
3631(statement)X
3958(is)X
2399 3704(``anything)N
2758 0.1953(unrecognizable''.)AX
3367(In)X
3458(fact)X
3603(most)X
3782(of)X
3873(For-)X
2399 3800(tran)N
2557(falls)X
2727(into)X
2883(this)X
3030(category,)X
3359(since)X
3556(any)X
3704(statement)X
2399 3896(that)N
2550(does)X
2728(not)X
2861(begin)X
3070(with)X
3243(one)X
3390(of)X
3488(the)X
3616(keywords)X
3958(is)X
2399 3992(by)N
2499(de\256nition)X
2825 0.2153(``unrecognizable.'')AX
2599 4116(Code)N
2796(generation)X
3163(is)X
3244(also)X
3401(simple.)X
3681(If)X
3762(the)X
3887(\256rst)X
2399 4212(thing)N
2595(on)X
2707(a)X
2775(source)X
3017(line)X
3168(is)X
3252(not)X
3385(a)X
3452(keyword)X
3764(\(like)X
3 f
3942(if)X
1 f
3991(,)X
3 f
2399 4308(else)N
1 f
2524(,)X
2568(etc.\))X
2733(the)X
2855(entire)X
3062(statement)X
3393(is)X
3470(simply)X
3711(copied)X
3949(to)X
2399 4404(the)N
2531(output)X
2769(with)X
2945(appropriate)X
3344(character)X
3673(translation)X
2399 4500(and)N
2548(formatting.)X
2959(\(Leading)X
3282(digits)X
3492(are)X
3624(treated)X
3876(as)X
3975(a)X
2399 4596(label.\))N
2634(Keywords)X
2996(cause)X
3207(only)X
3380(slightly)X
3650(more)X
3846(com-)X
2399 4692(plicated)N
2683(actions.)X
2980(For)X
3121(example,)X
3442(when)X
3 f
3645(if)X
1 f
3723(is)X
3805(recog-)X
2399 4788(nized,)N
2617(two)X
2761(consecutive)X
3164(labels)X
3375(L)X
3448(and)X
3588(L+1)X
3746(are)X
3868(gen-)X
2399 4884(erated)N
2624(and)X
2768(the)X
2894(value)X
3096(of)X
3190(L)X
3266(is)X
3346(stacked.)X
3654(The)X
3806(condi-)X
2399 4980(tion)N
2543(is)X
2616(then)X
2774(isolated,)X
3063(and)X
3199(the)X
3317(code)X
2599 5124(if)N
2668(\(.not.)X
2857(\(condition\)\))X
3260(goto)X
3422(L)X
2399 5268(is)N
2492(output.)X
2776(The)X
2 f
2940(statement)X
1 f
3286(part)X
3450(of)X
3556(the)X
3 f
3693(if)X
1 f
3781(is)X
3873(then)X
2399 5364(translated.)N
2798(When)X
3037(the)X
3182(end)X
3345(of)X
3459(the)X
3604(statement)X
3958(is)X
2399 5460(encountered)N
2822(\(which)X
3075(may)X
3243(be)X
3349(some)X
3548(distance)X
3841(away)X
2399 5556(and)N
2535(include)X
2791(nested)X
3 f
3016(if)X
1 f
3065('s,)X
3163(of)X
3250(course\),)X
3527(the)X
3645(code)X
2599 5700(L)N
2829(continue)X
2399 5844(is)N
2493(generated,)X
2867(unless)X
3108(there)X
3310(is)X
3404(an)X
3 f
3521(else)X
1 f
3687(clause,)X
3949(in)X

11 p
%%Page: 11 11
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3714(PS2:8-11)X
555 672(which)N
771(case)X
930(the)X
1048(code)X
1220(is)X
985 816(goto)N
1147(L+1)X
755 912(L)N
985(continue)X
555 1056(In)N
642(this)X
777(latter)X
962(case,)X
1141(the)X
1259(code)X
755 1200(L+1)N
985(continue)X
555 1344(is)N
642(produced)X
975(after)X
1157(the)X
2 f
1289(statement)X
1 f
1630(part)X
1789(of)X
1890(the)X
3 f
2022(else.)X
1 f
555 1440(Code)N
755(generation)X
1125(for)X
1250(the)X
1379(various)X
1645(loops)X
1848(is)X
1931(equally)X
555 1536(simple.)N
755 1660(One)N
919(might)X
1134(argue)X
1342(that)X
1491(more)X
1685(care)X
1849(should)X
2091(be)X
555 1756(taken)N
752(in)X
837(code)X
1012(generation.)X
1413(For)X
1546(example,)X
1860(if)X
1931(there)X
2114(is)X
555 1852(no)N
655(trailing)X
3 f
906(else)X
1 f
1031(,)X
985 1996(if)N
1054(\(i)X
1123(>)X
1188(0\))X
1275(x)X
1335(=)X
1400(a)X
555 2140(should)N
788(be)X
884(left)X
1011(alone,)X
1225(not)X
1347(converted)X
1684(into)X
985 2284(if)N
1054(\(.not.)X
1243(\(i)X
1312(.gt.)X
1434(0\)\))X
1548(goto)X
1710(100)X
985 2380(x)N
1045(=)X
1110(a)X
755 2476(100)N
985(continue)X
555 2620(But)N
702(what)X
890(are)X
1021(optimizing)X
1399(compilers)X
1747(for,)X
1892(if)X
1972(not)X
2105(to)X
555 2716(improve)N
846(code?)X
1078(It)X
1151(is)X
1228(a)X
1288(rare)X
1438(program)X
1733(indeed)X
1970(where)X
555 2812(this)N
715(kind)X
902(of)X
1014(``inef\256ciency'')X
1546(will)X
1715(make)X
1934(even)X
2131(a)X
555 2908(measurable)N
947(difference.)X
1340(In)X
1433(the)X
1557(few)X
1704(cases)X
1900(where)X
2123(it)X
555 3004(is)N
634(important,)X
991(the)X
1115(offending)X
1453(lines)X
1630(can)X
1767(be)X
1868(protected)X
555 3100(by)N
655(`%'.)X
755 3224(The)N
901(use)X
1029(of)X
1117(a)X
1174(compiler-compiler)X
1792(is)X
1865(de\256nitely)X
555 3320(the)N
693(preferred)X
1029(method)X
1309(of)X
1416(software)X
1733(development.)X
555 3416(The)N
710(language)X
1029(is)X
1111(well-de\256ned,)X
1561(with)X
1732(few)X
1882(syntactic)X
555 3512(irregularities.)N
1027(Implementation)X
1556(is)X
1631(quite)X
1813(simple;)X
2069(the)X
555 3608(original)N
850(construction)X
1291(took)X
1478(under)X
1706(a)X
1787(week.)X
2042(The)X
555 3704(language)N
876(is)X
960(suf\256ciently)X
1351(simple,)X
1614(however,)X
1941(that)X
2091(an)X
2 f
555 3800(ad)N
669(hoc)X
1 f
819(recognizer)X
1192(can)X
1337(be)X
1446(readily)X
1702(constructed)X
2105(to)X
555 3896(do)N
661(the)X
785(same)X
976(job)X
1104(if)X
1179(no)X
1284(compiler-compiler)X
1906(is)X
1984(avail-)X
555 3992(able.)N
755 4116(The)N
916(C)X
1005(version)X
1277(of)X
1380(Ratfor)X
1621(is)X
1710(used)X
1893(on)X
8 s
2008(UNIX)X
10 s
555 4212(and)N
712(on)X
833(the)X
972(Honeywell)X
8 s
1365(GCOS)X
10 s
1576(systems.)X
1909(C)X
2002(com-)X
555 4308(pilers)N
755(are)X
876(not)X
999(as)X
1087(widely)X
1326(available)X
1637(as)X
1725(Fortran,)X
2002(how-)X
555 4404(ever,)N
738(so)X
833(there)X
1018(is)X
1094(also)X
1246(a)X
1305(Ratfor)X
1533(written)X
1783(in)X
1868(itself)X
2051(and)X
555 4500(originally)N
899(bootstrapped)X
1345(with)X
1519(the)X
1649(C)X
1734(version.)X
2042(The)X
555 4596(Ratfor)N
788(version)X
1052(was)X
1205(written)X
1460(so)X
1559(as)X
1654(to)X
1744(translate)X
2043(into)X
555 4692(the)N
678(portable)X
965(subset)X
1189(of)X
1280(Fortran)X
1540(described)X
1872(in)X
1958([1],)X
2096(so)X
555 4788(it)N
624(is)X
702(portable,)X
1010(having)X
1253(been)X
1430(run)X
1561(essentially)X
1923(without)X
555 4884(change)N
806(on)X
908(at)X
988(least)X
1157(twelve)X
1393(distinct)X
1650(machines.)X
2015(\(The)X
555 4980(main)N
745(restrictions)X
1131(of)X
1227(the)X
1354(portable)X
1646(subset)X
1875(are:)X
2025(only)X
555 5076(one)N
694(character)X
1013(per)X
1139(machine)X
1434(word;)X
1643(subscripts)X
1985(in)X
2069(the)X
555 5172(form)N
2 f
745(c)X
9 f
781(*)X
2 f
(v)S
9 f
857(\261)X
2 f
901(c;)X
1 f
998(avoiding)X
1311(expressions)X
1718(in)X
1813(places)X
2047(like)X
8 s
555 5268(DO)N
10 s
697(loops;)X
942(consistency)X
1366(in)X
1477(subroutine)X
1864(argument)X
555 5364(usage,)N
782(and)X
922(in)X
8 s
1008(COMMON)X
10 s
1327(declarations.)X
1779(Ratfor)X
2007(itself)X
555 5460(will)N
714(not)X
851(gratuitously)X
1268(generate)X
1576(non-standard)X
2029(For-)X
555 5556(tran.\))N
755 5680(The)N
914(Ratfor)X
1153(version)X
1423(is)X
1510(about)X
1722(1500)X
1916(lines)X
2100(of)X
555 5776(Ratfor)N
789(\(compared)X
1162(to)X
1253(about)X
1460(1000)X
1648(lines)X
1827(of)X
1922(C\);)X
2052(this)X
2399 672(compiles)N
2715(into)X
2866(2500)X
3052(lines)X
3229(of)X
3322(Fortran.)X
3624(This)X
3792(expan-)X
2399 768(sion)N
2557(ratio)X
2729(is)X
2807(somewhat)X
3157(higher)X
3387(than)X
3550(average,)X
3846(since)X
2399 864(the)N
2598(compiled)X
2997(code)X
3250(contains)X
3618(unnecessary)X
2399 960 0.3125(occurrences)AN
2819(of)X
8 s
2921(COMMON)X
10 s
3251(declarations.)X
3713(The)X
3872(exe-)X
2399 1056(cution)N
2624(time)X
2790(of)X
2881(the)X
3003(Ratfor)X
3232(version)X
3492(is)X
3569(dominated)X
3931(by)X
2399 1152(two)N
2555(routines)X
2849(that)X
3005(read)X
3179(and)X
3330(write)X
3530(cards.)X
3775(Clearly)X
2399 1248(these)N
2616(routines)X
2926(could)X
3156(be)X
3284(replaced)X
3608(by)X
3739(machine)X
2399 1344(coded)N
2639(local)X
2843(versions;)X
3180(unless)X
3428(this)X
3590(is)X
3690(done,)X
3913(the)X
2399 1440(ef\256ciency)N
2740(of)X
2831(other)X
3019(parts)X
3198(of)X
3288(the)X
3409(translation)X
3770(process)X
2399 1536(is)N
2472(largely)X
2715(irrelevant.)X
3 f
2399 1728(4.)N
2499(EXPERIENCE)X
2399 1920(Good)N
2605(Things)X
1 f
2599 2044(``It's)N
2795(so)X
2901(much)X
3113(better)X
3330(than)X
3502(Fortran'')X
3826(is)X
3913(the)X
2399 2140(most)N
2579(common)X
2883(response)X
3188(of)X
3279(users)X
3468(when)X
3666(asked)X
3873(how)X
2399 2236(well)N
2572(Ratfor)X
2811(meets)X
3032(their)X
3213(needs.)X
3470(Although)X
3806(cynics)X
2399 2332(might)N
2608(consider)X
2903(this)X
3040(to)X
3124(be)X
3222(vacuous,)X
3527(it)X
3593(does)X
3762(seem)X
3949(to)X
2399 2428(be)N
2515(true)X
2680(that)X
2840(decent)X
3090(control)X
3357(\257ow)X
3539(and)X
3695(cosmetics)X
2399 2524(converts)N
2695(Fortran)X
2955(from)X
3134(a)X
3193(bad)X
3332(language)X
3645(into)X
3792(quite)X
3975(a)X
2399 2620(reasonable)N
2770(one,)X
2932(assuming)X
3260(that)X
3406(Fortran)X
3668(data)X
3828(struc-)X
2399 2716(tures)N
2575(are)X
2694(adequate)X
3000(for)X
3114(the)X
3232(task)X
3381(at)X
3459(hand.)X
2599 2840(Although)N
2934(there)X
3128(are)X
3260(no)X
3372(quantitative)X
3782(results,)X
2399 2936(users)N
2587(feel)X
2731(that)X
2873(coding)X
3113(in)X
3197(Ratfor)X
3424(is)X
3499(at)X
3579(least)X
3748(twice)X
3944(as)X
2399 3032(fast)N
2557(as)X
2666(in)X
2769(Fortran.)X
3086(More)X
3301(important,)X
3673(debugging)X
2399 3128(and)N
2548(subsequent)X
2937(revision)X
3227(are)X
3358(much)X
3568(faster)X
3779(than)X
3949(in)X
2399 3224(Fortran.)N
2712(Partly)X
2940(this)X
3092(is)X
3181(simply)X
3434(because)X
3725(the)X
3859(code)X
2399 3320(can)N
2532(be)X
2 f
2629(read.)X
1 f
2837(The)X
2983(looping)X
3248(statements)X
3606(which)X
3822(test)X
3953(at)X
2399 3416(the)N
2520(top)X
2645(instead)X
2895(of)X
2985(the)X
3105(bottom)X
3353(seem)X
3540(to)X
3624(eliminate)X
3944(or)X
2399 3512(at)N
2486(least)X
2662(reduce)X
2906(the)X
3033 0.3611(occurrence)AX
3416(of)X
3512(a)X
3576(wide)X
3760(class)X
3944(of)X
2399 3608(boundary)N
2734(errors.)X
2994(And)X
3164(of)X
3263(course)X
3505(it)X
3580(is)X
3664(easy)X
3838(to)X
3931(do)X
2399 3704(structured)N
2782(programming)X
3280(in)X
3404(Ratfor;)X
3692(this)X
3868(self-)X
2399 3800(discipline)N
2730(also)X
2879(contributes)X
3255(markedly)X
3578(to)X
3660(reliability.)X
2599 3924(One)N
2756(interesting)X
3116(and)X
3254(encouraging)X
3673(fact)X
3816(is)X
3891(that)X
2399 4020(programs)N
2727(written)X
2979(in)X
3066(Ratfor)X
3296(tend)X
3459(to)X
3546(be)X
3647(as)X
3738(readable)X
2399 4116(as)N
2503(programs)X
2843(written)X
3107(in)X
3206(more)X
3408(modern)X
3690(languages)X
2399 4212(like)N
2546(Pascal.)X
2818(Once)X
3015(one)X
3158(is)X
3238(freed)X
3431(from)X
3614(the)X
3739(shackles)X
2399 4308(of)N
2491(Fortran's)X
2810(clerical)X
3072(detail)X
3274(and)X
3414(rigid)X
3589(input)X
3777(format,)X
2399 4404(it)N
2485(is)X
2580(easy)X
2765(to)X
2869(write)X
3076(code)X
3270(that)X
3431(is)X
3525(readable,)X
3859(even)X
2399 4500(esthetically)N
2789(pleasing.)X
3121(For)X
3257(example,)X
3573(here)X
3736(is)X
3813(a)X
3873(Rat-)X
2399 4596(for)N
2520(implementation)X
3049(of)X
3143(the)X
3268(linear)X
3477(table)X
3659(search)X
3891(dis-)X
2399 4692(cussed)N
2633(by)X
2733(Knuth)X
2953([7]:)X
2599 4836(A\(m+1\))N
2878(=)X
2943(x)X
2599 4932(for)N
2713(\(i)X
2782(=)X
2847(1;)X
2929(A\(i\))X
3083(!=)X
3175(x;)X
3257(i)X
3299(=)X
3364(i)X
3406(+)X
3471(1\))X
2829 5028(;)N
2599 5124(if)N
2668(\(i)X
2737(>)X
2802(m\))X
2911({)X
2829 5220(m)N
2911(=)X
2976(i)X
2829 5316(B\(i\))N
2978(=)X
3043(1)X
2599 5412(})N
2599 5508(else)N
2829 5604(B\(i\))N
2978(=)X
3043(B\(i\))X
3192(+)X
3257(1)X
2399 5748(A)N
2480(large)X
2664(corpus)X
2901(\(5400)X
3111(lines\))X
3312(of)X
3402(Ratfor,)X
3650(including)X
3975(a)X
2399 5844(subset)N
2637(of)X
2742(the)X
2878(Ratfor)X
3121(preprocessor)X
3569(itself,)X
3786(can)X
3935(be)X

12 p
%%Page: 12 12
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-12)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
555 672(found)N
762(in)X
844([8].)X
3 f
555 864(Bad)N
712(Things)X
1 f
755 988(The)N
922(biggest)X
1194(single)X
1426(problem)X
1734(is)X
1828(that)X
1989(many)X
555 1084(Fortran)N
824(syntax)X
1065(errors)X
1285(are)X
1416(not)X
1550(detected)X
1850(by)X
1962(Ratfor)X
555 1180(but)N
687(by)X
797(the)X
924(local)X
1109(Fortran)X
1374(compiler.)X
1728(The)X
1882(compiler)X
555 1276(then)N
727(prints)X
943(a)X
1012(message)X
1317(in)X
1412(terms)X
1623(of)X
1723(the)X
1854(generated)X
555 1372(Fortran,)N
832(and)X
969(in)X
1052(a)X
1109(few)X
1251(cases)X
1442(this)X
1578(may)X
1736(be)X
1832(dif\256cult)X
2105(to)X
555 1468(relate)N
755(back)X
928(to)X
1011(the)X
1129(offending)X
1461(Ratfor)X
1686(line,)X
1846(especially)X
555 1564(if)N
627(the)X
748(implementation)X
1273(conceals)X
1573(the)X
1694(generated)X
2029(For-)X
555 1660(tran.)N
741(This)X
904(problem)X
1192(could)X
1391(be)X
1488(dealt)X
1665(with)X
1827(by)X
1927(tagging)X
555 1756(each)N
737(generated)X
1084(line)X
1238(with)X
1414(some)X
1616(indication)X
1969(of)X
2069(the)X
555 1852(source)N
799(line)X
953(that)X
1107(created)X
1374(it,)X
1472(but)X
1608(this)X
1756(is)X
1842(inherently)X
555 1948(implementation-dependent,)N
1471(so)X
1578(no)X
1694(action)X
1926(has)X
2069(yet)X
555 2044(been)N
734(taken.)X
975(Error)X
1171(message)X
1469(interpretation)X
1927(is)X
2006(actu-)X
555 2140(ally)N
710(not)X
847(so)X
952(arduous)X
1240(as)X
1341(might)X
1561(be)X
1671(thought.)X
1989(Since)X
555 2236(Ratfor)N
789(generates)X
1121(no)X
1229(variables,)X
1567(only)X
1737(a)X
1801(simple)X
2042(pat-)X
555 2332(tern)N
716(of)X
8 s
818(IF)X
10 s
875('s)X
968(and)X
8 s
1119(GOTO)X
10 s
1296('s,)X
1409(data-related)X
1824(errors)X
2047(like)X
555 2428(missing)N
8 s
829(DIMENSION)X
10 s
1213(statements)X
1577(are)X
1701(easy)X
1869(to)X
1956(\256nd)X
2105(in)X
555 2524(the)N
676(Fortran.)X
975(Furthermore,)X
1418(there)X
1601(has)X
1730(been)X
1904(a)X
1962(steady)X
555 2620(improvement)N
1021(in)X
1122(Ratfor's)X
1424(ability)X
1667(to)X
1768(catch)X
1976(trivial)X
555 2716(syntactic)N
873(errors)X
1094(like)X
1246(unbalanced)X
1644(parentheses)X
2051(and)X
555 2812(quotes.)N
755 2936(There)N
998(are)X
1152(a)X
1243(number)X
1543(of)X
1665(implementation)X
555 3032(weaknesses)N
954(that)X
1098(are)X
1221(a)X
1280(nuisance,)X
1604(especially)X
1948(to)X
2033(new)X
555 3128(users.)N
783(For)X
917(example,)X
1232(keywords)X
1567(are)X
1689(reserved.)X
2025(This)X
555 3224(rarely)N
791(makes)X
1043(any)X
1206(difference,)X
1600(except)X
1857(for)X
1998(those)X
555 3320(hardy)N
766(souls)X
957(who)X
1122(want)X
1305(to)X
1394(use)X
1528(an)X
1631(Arithmetic)X
8 s
2005(IF)X
10 s
2062(.)X
2109(A)X
555 3416(few)N
747(standard)X
1090(Fortran)X
1397(constructions)X
1895(are)X
2065(not)X
555 3512(accepted)N
878(by)X
999(Ratfor,)X
1265(and)X
1422(this)X
1578(is)X
1671(perceived)X
2024(as)X
2131(a)X
555 3608(problem)N
851(by)X
960(users)X
1154(with)X
1324(a)X
1388(large)X
1577(corpus)X
1819(of)X
1914(existing)X
555 3704(Fortran)N
829(programs.)X
1210(Protecting)X
1577(every)X
1794(line)X
1952(with)X
2131(a)X
555 3800(`%')N
704(is)X
785(not)X
915(really)X
1126(a)X
1190(complete)X
1512(solution,)X
1816(although)X
2123(it)X
555 3896(serves)N
780(as)X
871(a)X
931(stop-gap.)X
1271(The)X
1419(best)X
1571(long-term)X
1910(solution)X
555 3992(is)N
631(provided)X
939(by)X
1042(the)X
1163(program)X
1457(Struct)X
1670([9],)X
1806(which)X
2024(con-)X
555 4088(verts)N
731(arbitrary)X
1028(Fortran)X
1284(programs)X
1607(into)X
1751(Ratfor.)X
755 4212(Users)N
962(who)X
1124(export)X
1353(programs)X
1680(often)X
1869(complain)X
555 4308(that)N
742(the)X
906(generated)X
1285(Fortran)X
1587(is)X
1706 0.2788(``unreadable'')AX
555 4404(because)N
834(it)X
902(is)X
979(not)X
1105(tastefully)X
1426(formatted)X
1761(and)X
1900(contains)X
555 4500(extraneous)N
8 s
925(CONTINUE)X
10 s
1272(statements.)X
1671(To)X
1781(some)X
1971(extent)X
555 4596(this)N
692(can)X
826(be)X
924(ameliorated)X
1325(\(Ratfor)X
1579(now)X
1738(has)X
1866(an)X
1963(option)X
555 4692(to)N
644(copy)X
827(Ratfor)X
1059(comments)X
1415(into)X
1566(the)X
1690(generated)X
2029(For-)X
555 4788(tran\),)N
748(but)X
871(it)X
936(has)X
1064(always)X
1308(seemed)X
1570(that)X
1711(effort)X
1911(is)X
1984(better)X
555 4884(spent)N
761(on)X
878(the)X
1013(input)X
1213(language)X
1539(than)X
1713(on)X
1829(the)X
1963(output)X
555 4980(esthetics.)N
755 5104(One)N
923(\256nal)X
1099(problem)X
1400(is)X
1487(partly)X
1707(attributable)X
2105(to)X
555 5200(success)N
848(\320)X
980(since)X
1197(Ratfor)X
1453(is)X
1557(relatively)X
1911(easy)X
2105(to)X
555 5296(modify,)N
835(there)X
1025(are)X
1152(now)X
1318(several)X
1574(dialects)X
1847(of)X
1942(Ratfor.)X
555 5392(Fortunately,)N
972(so)X
1071(far)X
1189(most)X
1372(of)X
1467(the)X
1593(differences)X
1979(are)X
2105(in)X
555 5488(character)N
894(set,)X
1046(or)X
1156(in)X
1261(invisible)X
1579(aspects)X
1853(like)X
2015(code)X
555 5584(generation.)N
3 f
2399 672(5.)N
2499(CONCLUSIONS)X
1 f
2599 796(Ratfor)N
2827(demonstrates)X
3273(that)X
3415(with)X
3579(modest)X
3832(effort)X
2399 892(it)N
2494(is)X
2598(possible)X
2911(to)X
3024(convert)X
3316(Fortran)X
3603(from)X
3809(a)X
3895(bad)X
2399 988(language)N
2710(into)X
2855(quite)X
3036(a)X
3093(good)X
3273(one.)X
3449(A)X
3527(preprocessor)X
3958(is)X
2399 1084(clearly)N
2649(a)X
2716(useful)X
2943(way)X
3108(to)X
3201(extend)X
3446(or)X
3544(ameliorate)X
3913(the)X
2399 1180(facilities)N
2695(of)X
2782(a)X
2838(base)X
3001(language.)X
2599 1304(When)N
2817(designing)X
3154(a)X
3216(language,)X
3552(it)X
3622(is)X
3700(important)X
2399 1400(to)N
2506(concentrate)X
2922(on)X
3047(the)X
3190(essential)X
3511(requirement)X
3944(of)X
2399 1496(providing)N
2732(the)X
2851(user)X
3006(with)X
3169(the)X
3288(best)X
3438(language)X
3749(possible)X
2399 1592(for)N
2527(a)X
2597(given)X
2809(effort.)X
3061(One)X
3228(must)X
3416(avoid)X
3627(throwing)X
3949(in)X
2399 1688 0.3068(``features'')AN
2785(\320)X
2887(things)X
3104(which)X
3322(the)X
3442(user)X
3598(may)X
3758(trivially)X
2399 1784(construct)N
2713(within)X
2937(the)X
3055(existing)X
3328(framework.)X
2599 1908(One)N
2758(must)X
2938(also)X
3092(avoid)X
3295(getting)X
3541(sidetracked)X
3931(on)X
2399 2004(irrelevancies.)N
2879(For)X
3018(instance)X
3309(it)X
3381(seems)X
3605(pointless)X
3917(for)X
2399 2100(Ratfor)N
2646(to)X
2750(prepare)X
3034(a)X
3112(neatly)X
3350(formatted)X
3704(listing)X
3944(of)X
2399 2196(either)N
2608(its)X
2709(input)X
2899(or)X
2992(its)X
3092(output.)X
3361(The)X
3511(user)X
3670(is)X
3748(presum-)X
2399 2292(ably)N
2584(capable)X
2877(of)X
2991(the)X
3135(self-discipline)X
3635(required)X
3949(to)X
2399 2388(prepare)N
2668(neat)X
2829(input)X
3019(that)X
3165(re\257ects)X
3423(his)X
3542(thoughts.)X
3883(It)X
3958(is)X
2399 2484(much)N
2612(more)X
2811(important)X
3156(that)X
3310(the)X
3442(language)X
3766(provide)X
2399 2580(free-form)N
2744(input)X
2944(so)X
3051(he)X
2 f
3163(can)X
1 f
3314(format)X
3563(it)X
3642(neatly.)X
3913(No)X
2399 2676(one)N
2543(should)X
2784(read)X
2951(the)X
3077(output)X
3309(anyway)X
3587(except)X
3824(in)X
3913(the)X
2399 2772(most)N
2574(dire)X
2719(circumstances.)X
3 f
2399 2964(Acknowledgements)N
1 f
2599 3088(C.)N
2702(A.)X
2810(R.)X
2913(Hoare)X
3140(once)X
3322(said)X
3481(that)X
3630(``One)X
3847(thing)X
2399 3184([the)N
2580(language)X
2926(designer])X
3281(should)X
3549(not)X
3706(do)X
3841(is)X
3949(to)X
2399 3280(include)N
2659(untried)X
2910(ideas)X
3099(of)X
3190(his)X
3307(own.'')X
3543(Ratfor)X
3771(follows)X
2399 3376(this)N
2546(precept)X
2815(very)X
2990(closely)X
3249(\320)X
3361(everything)X
3736(in)X
3829(it)X
3904(has)X
2399 3472(been)N
2575(stolen)X
2790(from)X
2970(someone)X
3279(else.)X
3468(Most)X
3656(of)X
3747(the)X
3868(con-)X
2399 3568(trol)N
2550(\257ow)X
2732(structures)X
3083(are)X
3221(taken)X
3434(directly)X
3718(from)X
3913(the)X
2399 3664(language)N
2721(C[4])X
2899(developed)X
3260(by)X
3371(Dennis)X
3629(Ritchie;)X
3913(the)X
2399 3760(comment)N
2775(and)X
2969(continuation)X
3447(conventions)X
3912(are)X
2399 3856(adapted)N
2669(from)X
2845(Altran[10].)X
2599 3980(I)N
2673(am)X
2818(grateful)X
3115(to)X
3223(Stuart)X
3460(Feldman,)X
3806(whose)X
2399 4076(patient)N
2646(simulation)X
3011(of)X
3106(an)X
3210(innocent)X
3514(user)X
3676(during)X
3913(the)X
2399 4172(early)N
2623(days)X
2832(of)X
2961(Ratfor)X
3228(led)X
3388(to)X
3512(several)X
3802(design)X
2399 4268(improvements)N
2896(and)X
3051(the)X
3188(eradication)X
3583(of)X
3688(bugs.)X
3917(He)X
2399 4364(also)N
2549(translated)X
2882(the)X
3001(C)X
3075(parse-tables)X
3480(and)X
8 s
3616(YACC)X
10 s
3814(parser)X
2399 4460(into)N
2543(Fortran)X
2799(for)X
2913(the)X
3031(\256rst)X
3175(Ratfor)X
3400(version)X
3656(of)X
3743(Ratfor.)X
3 f
2399 4652(References)N
1 f
2399 4776([1])N
2599(B.)X
2731(G.)X
2868(Ryder,)X
3143(``The)X
3381(PFORT)X
3687(Veri\256er,'')X
2 f
2599 4872(Software\320Practice)N
3254(&)X
3343(Experience,)X
1 f
3752(October)X
2599 4968(1974.)N
2399 5092([2])N
2599(American)X
3009(National)X
3378(Standard)X
3755(Fortran.)X
2599 5188(American)N
2990(National)X
3340(Standards)X
3729(Institute,)X
2599 5284(New)N
2771(York,)X
2976(1966.)X
2399 5408([3])N
2 f
2599(For-word:)X
3136(Fortran)X
3587(Development)X
2599 5504(Newsletter,)N
1 f
2981(August)X
3232(1975.)X
2399 5628([4])N
2599(B.)X
2697(W.)X
2818(Kernighan)X
3182(and)X
3322(D.)X
3424(M.)X
3539(Ritchie,)X
2 f
3814(The)X
3958(C)X
2599 5724(Programming)N
3136(Language,)X
1 f
3563(Prentice-Hall,)X
2599 5820(Inc.,)N
2762(1978.)X

13 p
%%Page: 13 13
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(RATFOR)N
890(\320)X
990(A)X
1068(Preprocessor)X
1503(for)X
1617(a)X
1673(Rational)X
1964(Fortran)X
3714(PS2:8-13)X
555 672([5])N
755(D.)X
863(M.)X
984(Ritchie)X
1245(and)X
1391(K.)X
1499(L.)X
1597(Thompson,)X
1988(``The)X
755 768(UNIX)N
980(Time-sharing)X
1436(System.'')X
2 f
1769(CACM)X
1 f
1991(,)X
2034(July)X
755 864(1974.)N
555 988([6])N
755(S.)X
862(C.)X
978(Johnson,)X
1303(``YACC)X
1622(\320)X
1745(Yet)X
1904(Another)X
755 1084(Compiler-Compiler.'')N
1544(Bell)X
1761(Laboratories)X
755 1180(Computing)N
1146(Science)X
1428(Technical)X
1777(Report)X
2027(#32,)X
755 1276(1978.)N
555 1400([7])N
755(D.)X
888(E.)X
1011(Knuth,)X
1285(``Structured)X
1727(Programming)X
755 1496(with)N
950(goto)X
1145(Statements.'')X
2 f
1622(Computing)X
2029(Sur-)X
755 1592(veys)N
1 f
894(,)X
934(December)X
1285(1974.)X
555 1716([8])N
755(B.)X
896(W.)X
1060(Kernighan)X
1467(and)X
1651(P.)X
1783(J.)X
1902(Plauger,)X
2 f
755 1812(Software)N
1059(Tools,)X
1 f
1276(Addison-Wesley,)X
1855(1976.)X
555 1936([9])N
755(B.)X
858(S.)X
952(Baker,)X
1194(``Struct)X
1469(\320)X
1579(A)X
1666(Program)X
1971(which)X
755 2032(Structures)N
1160(Fortran'',)X
1549(Bell)X
1761(Laboratories)X
755 2128(internal)N
1020(memorandum,)X
1505(December)X
1856(1975.)X
555 2252([10])N
755(A.)X
898(D.)X
1040(Hall,)X
1262(``The)X
1505(Altran)X
1774(System)X
2073(for)X
755 2348(Rational)N
1056(Function)X
1370(Manipulation)X
1831(\320)X
1941(A)X
2029(Sur-)X
755 2444(vey.'')N
2 f
965(CACM)X
1 f
1187(,)X
1227(August)X
1478(1971.)X

14 p
%%Page: 14 14
10 s 0 xH 0 xS 1 f
0 32(--)N
4323(--)X
555 416(PS2:8-14)N
2366(RATFOR)X
2701(\320)X
2801(A)X
2879(Preprocessor)X
3314(for)X
3428(a)X
3484(Rational)X
3775(Fortran)X
3 f
555 672(Appendix:)N
934(Usage)X
1159(on)X
8 s
1263(UNIX)X
10 s
1446(and)X
8 s
1594(GCOS)X
10 s
1776(.)X
1 f
755 796(Beware)N
1021(\320)X
1121(local)X
1297(customs)X
1579(vary.)X
1782(Check)X
2007(with)X
2169(a)X
2225(native)X
2441(before)X
2667(going)X
2869(into)X
3013(the)X
3131(jungle.)X
3 f
555 988(UNIX)N
1 f
755 1112(The)N
901(program)X
3 f
1194(ratfor)X
1 f
1421(is)X
1495(the)X
1614(basic)X
1800(translator;)X
2146(it)X
2211(takes)X
2397(either)X
2601(a)X
2658(list)X
2776(of)X
2864(\256le)X
2987(names)X
3213(or)X
3301(the)X
3419(standard)X
3711(input)X
3895(and)X
555 1208(writes)N
780(Fortran)X
1045(on)X
1154(the)X
1281(standard)X
1582(output.)X
1855(Options)X
2137(include)X
3 f
9 f
2402(-)X
3 f
2446(6x)X
1 f
(,)S
2575(which)X
2800(uses)X
3 f
2967(x)X
1 f
3036(as)X
3132(a)X
3197(continuation)X
3625(character)X
3949(in)X
555 1304(column)N
822(6)X
889(\()X
8 s
916(UNIX)X
10 s
1102(uses)X
3 f
1267(&)X
1 f
1361(in)X
1450(column)X
1717(1\),)X
1830(and)X
3 f
9 f
1972(-)X
3 f
2016(C)X
1 f
2074(,)X
2120(which)X
2342(causes)X
2578(Ratfor)X
2809(comments)X
3164(to)X
3252(be)X
3354(copied)X
3594(into)X
3744(the)X
3868(gen-)X
555 1400(erated)N
772(Fortran.)X
755 1524(The)N
900(program)X
3 f
1192(rc)X
1 f
1284(provides)X
1580(an)X
1676(interface)X
1978(to)X
2060(the)X
3 f
2178(ratfor)X
1 f
2404(command)X
2740(which)X
2956(is)X
3029(much)X
3227(the)X
3345(same)X
3530(as)X
3 f
3617(cc)X
1 f
3689(.)X
3729(Thus)X
755 1668(rc)N
838([options])X
1147(\256les)X
555 1812(compiles)N
865(the)X
984(\256les)X
1138(speci\256ed)X
1444(by)X
3 f
1545(\256les)X
1 f
1678(.)X
1719(Files)X
1895(with)X
2058(names)X
2284(ending)X
2523(in)X
3 f
2606(.r)X
1 f
2682(are)X
2801(Ratfor)X
3026(source;)X
3278(other)X
3463(\256les)X
3616(are)X
3735(assumed)X
555 1908(to)N
637(be)X
733(for)X
847(the)X
965(loader.)X
1226(The)X
1371(\257ags)X
3 f
9 f
1542(-)X
3 f
1586(C)X
1 f
1664(and)X
3 f
9 f
1800(-)X
3 f
1844(6x)X
1 f
1944(described)X
2272(above)X
2484(are)X
2603(recognized,)X
2996(as)X
3083(are)X
9 f
755 2052(-)N
1 f
799(c)X
985(compile)X
1263(only;)X
1447(don)X
9 f
(\242)S
1 f
1587(t)X
1629(load)X
9 f
755 2148(-)N
1 f
799(f)X
985(save)X
1148(intermediate)X
1569(Fortran)X
1825(.f)X
1892(\256les)X
9 f
755 2244(-)N
1 f
799(r)X
985(Ratfor)X
1210(only;)X
1394(implies)X
9 f
1649(-)X
1 f
1693(c)X
1749(and)X
9 f
1885(-)X
1 f
1929(f)X
9 f
755 2340(-)N
1 f
799(2)X
985(use)X
1112(big)X
1234(Fortran)X
1490(compiler)X
1795(\(for)X
1936(large)X
2117(programs\))X
9 f
755 2436(-)N
1 f
799(U)X
985(\257ag)X
1125(undeclared)X
1498(variables)X
1808(\(not)X
1957(universally)X
2333(available\))X
555 2580(Other)N
758(\257ags)X
929(are)X
1048(passed)X
1282(on)X
1382(to)X
1464(the)X
1582(loader.)X
3 f
555 2772(GCOS)N
1 f
755 2896(The)N
904(program)X
3 f
1200(./ratfor)X
1 f
1472(is)X
1549(the)X
1671(bare)X
1834(translator,)X
2181(and)X
2321(is)X
2398(identical)X
2698(to)X
2784(the)X
8 s
2906(UNIX)X
10 s
3089(version,)X
3369(except)X
3603(that)X
3747(the)X
3868(con-)X
555 2992(tinuation)N
859(convention)X
1235(is)X
3 f
1308(&)X
1 f
1395(in)X
1477(column)X
1737(6.)X
1837(Thus)X
755 3136(./ratfor)N
1016(\256les)X
1189(>output)X
555 3280(translates)N
883(the)X
1006(Ratfor)X
1236(source)X
1471(on)X
3 f
1576(\256les)X
1 f
1734(and)X
1875(collects)X
2145(the)X
2268(generated)X
2606(Fortran)X
2867(on)X
2971(\256le)X
3097(`output')X
3379(for)X
3497(subsequent)X
3877(pro-)X
555 3376(cessing.)N
3 f
755 3500(./rc)N
1 f
891(provides)X
1189(much)X
1389(the)X
1509(same)X
1696(services)X
1977(as)X
3 f
2066(rc)X
1 f
2160(\(within)X
2413(the)X
2533(limitations)X
2896(of)X
8 s
2985(GCOS)X
10 s
3156(\),)X
3225(regrettably)X
3595(with)X
3758(a)X
3815(some-)X
555 3596(what)N
731(different)X
1028(syntax.)X
1297(Options)X
1570(recognized)X
1943(by)X
3 f
2043(./rc)X
1 f
2177(include)X
755 3740(name)N
1446(Ratfor)X
1671(source)X
1901(or)X
1988(library,)X
2242(depending)X
2596(on)X
2696(type)X
755 3836(h=/name)N
1446(make)X
1640(TSS)X
1797(H)X
9 f
1855(*)X
1 f
1915(\256le)X
2037(\(runnable)X
2365(version\);)X
2670(run)X
2797(as)X
2884(/name)X
755 3932(r=/name)N
1446(update)X
1680(and)X
1816(use)X
1943(random)X
2208(library)X
755 4028(a=)N
1446(compile)X
1724(as)X
1811(ascii)X
1978(\(default)X
2248(is)X
2321(bcd\))X
755 4124(C=)N
1446(copy)X
1622(comments)X
1971(into)X
2115(Fortran)X
755 4220(f=name)N
1446(Fortran)X
1702(source)X
1932(\256le)X
755 4316(g=name)N
1446(gmap)X
1644(source)X
1874(\256le)X
555 4460(Other)N
758(options)X
1013(are)X
1132(as)X
1219(speci\256ed)X
1524(for)X
1638(the)X
3 f
1756(./cc)X
1 f
1890(command)X
2226(described)X
2554(in)X
2636([4].)X
3 f
555 4652(TSO,)N
754(TSS,)X
935(and)X
1083(other)X
1286(systems)X
1 f
755 4776(Ratfor)N
980(exists)X
1182(on)X
1282(various)X
1538(other)X
1723(systems;)X
2018(check)X
2226(with)X
2388(the)X
2506(author)X
2731(for)X
2845(speci\256cs.)X
0 6360(--)N
4323(--)X

14 p
%%Trailer
xt

xs
